Although objects in our daily experiences have high complexity, we recognize them easily. For this efficient object recognition, our brain needs to represent structures of visual objects: the brain needs to parse objects into essential constituents and identify their relationships. How does the brain represent structures? Based on memory consolidation theories, we tested a hypothesis that the visual cortex gets to represent structures of visual objects through a consolidation period using an fMRI study. In the first phase, participants were exposed to syllables made of a combination of two different artificial letters (GA = G +A, DO = D + O). In the second session, LOC activation patterns were recorded while participants were exposed to new syllables made of a novel combination of the familiar letters (GO, DA). Lastly, we collected LOC activation patterns of the individual letters (O, G, D, A). Crucially, there was a week delay between the first and the second phases for the consolidation condition, while the control condition had no such delay. Consistent with our hypothesis, we found a greater LOC activation level for the syllables of the consolidation vs. the control condition. More importantly, activation patterns for syllables of the consolidation condition were better explained by the patterns of their constituent letters compared to the control condition. These results support the hypothesis that the visual cortex figures out structures of visual objects through a consolidation process. More interestingly, our study suggests that the structured representation is the basis of efficient comprehension of novel experiences.
Keywords: Structured representation, object recognition, memory consolidation, fMRI
set.seed(12345) # for reproducibility
options(knitr.kable.NA = '')
# install // load packages
# Some packages need to be loaded.
# We use `pacman` as a package manager, which takes care of the other packages.
if (!require("distill", quietly = TRUE)) install.packages("distill")
if (!require("devtools", quietly = TRUE)) install.packages("devtools")
if (!require("papaja", quietly = TRUE)) devtools::install_github("crsh/papaja")
if (!require("patchwork", quietly = TRUE)) devtools::install_github("thomasp85/patchwork")
if (!require("klippy", quietly = TRUE)) devtools::install_github("RLesur/klippy")
if (!require("pacman", quietly = TRUE)) install.packages("pacman")
if (!require("Rmisc", quietly = TRUE)) install.packages("Rmisc")
if (!require("rstatix", quietly = TRUE)) install.packages("rstatix")
if (!require("effsize", quietly = TRUE)) install.packages("effsize")
if (!require("lsr", quietly = TRUE)) install.packages("lsr")
if (!require("effectsize", quietly = TRUE)) install.packages("effectsize")
if (!require("ggbeeswarm", quietly = TRUE)) install.packages("ggbeeswarm") # Never load it directly.
pacman::p_load(tidyverse, papaja, knitr, dplyr, car, psych, afex, lme4, lmerTest,
emmeans, ggplot2, ggpubr, lattice, latticeExtra, parallel,
effects, psycho, caret, sjPlot, ppcor, rstatix)
library("patchwork"); library("klippy")
klippy::klippy()참가자. 인근 지역 대학에서 모집된 정상 시력의 성인 26명이 연구에 참여하였다. 2명의 참가자가 실험 도중 취소로 인해 제외되어 24명의 참가자(13명 여성, 오른손잡이, 연령 M = 23.83, SD = 3.31)의 데이터가 분석에 포함되었다.
물체 자극. 본 연구에서는 물체에 대한 구조적 지식을 추출하는 통합 과정을 통해 새로운 객체의 구조화된 표상이 촉진되는지 여부를 검증하고자 하였다. Consolidation을 통한 새로운 지식 형성에 의한 구조화된 표상의 효과를 검증하기 위해서는 사전 지식이 없는 낯선 물체들을 사용해야 한다. 또한 구조화된 표상의 형성을 살펴보기 위해서는 대상 물체 자극이 대상을 구성하는 구성요소로 명확하게 분해될 수 있어야 한다. 따라서 옴니글롯의 인공문자/알파벳을 참고하여 참가자들에게 친숙하지 않은 요소 자극들을 구성하였다. 그리고 이러한 요소 자극을 조합하여 대상 자극을 생성하였다.
이러한 작업을 통해 5개의 요소 범주, 각 범주 내 12개의 요소 자극이 구성되었다. 물체 자극은 각 범주의 12개 요소들을 2개씩 조합하여 구성하였다. 구체적으로 두 개의 요소 자극을 수평적으로 결합하여 하나의 물체처럼 보이게 하여 조합을 생성하였으며, 하나의 오브젝트를 구성하는 요소들이 서로 겹치지 않도록 하였다. 이를 통해 각 범주 내에서 12개의 요소로 총 66개의 대상 물체 자극(12C2)을 생성하였다. 5개 범주 중 4개는 행동 학습 과제 및 fMRI 스캔 단계의 신경 패턴 측정에서 대상 범주로 사용되었으며 나머지는 스캔 단계에서 1-백 캐치 시도에 대한 물체 자극으로 활용되었다.
목표 자극 범주 4개 각각에서 요소의 결합을 만들어진 66개의 물체 자극은 33개씩 구분되어 2개의 자극 세트를 구성하였다 두 자극 세트에 할당된 물체 자극들의 정체성은 서로 달랐으나, 물체를 구성하는 각 요소 자극은 5번 또는 6번씩 나누어져 유사하게 등장하도록 설정하였다. 예를 들어, 1번 요소를 기준으로, 1번 요소와 2~12번 요소들이 각각 결합하여 총 11개의 물체 자극이 만들어질 수 있다. 이 중 1번 요소가세트 1에5개, 세트 2에 6개가 할당되어 각 세트에서 요소들이 노출되는 빈도를 유사하게 맞추었다. 유사하게 2번 요소에서도 11개의 물체 자극이 구성되며 11개의 물체 자극도 세트 1에 6개, 세트 2에 5개를 할당하여 요소들이 노출되는 빈도를 유사하게 맞추었다. 이 때, 1번 요소와 2번 요소가 결합되어 생성된 물체 자극이 각 세트 내에 이미 존재할 수 있으며, 이 경우 이 자극이 어떤 세트에 미리 할당되었는지를 고려하여 새로운 자극을 할당하였다. 이러한 과정을 통해 12 개 요소 중 1번 세트에서 총 5번씩 노출되는 요소가 6개, 6번씩 노출되는 요소가 6개 있도록 물체 자극을 할당하였으며, 어떤 요소가 각 세트에 몇 번씩 할당되는지는 전체 참가자에 걸쳐 무선화되었다. 결과적으로 목표 범주인 4개 물체 범주 자극에서 각각 33개의 물체로 이루어진 2개의 자극 세트(세트 1과 세트 2)가 만들어졌다.
실험 절차. 실험은 2개의 공고화 조건(Consolidated vs. Immediate)을 요인으로 한 Within-subject Design으로 진행하였다. Consolidation의 효과를 검증하기 위한 일반적인 실험 패러다임을 따라 5일 간격으로 2일에 걸쳐 진행하였다.
절차는 아래 그림과 같다: Session 1 - 1st learning (행동, Objects, Consolidated); Session 2 - 1st learning (행동, Objects, Immediate), 2nd learning (In scanner, New objects, Consolidated & Immediate), Snapshot (In scanner, Constituents, Consolidated & Immediate) 단계, LOC localizer (In scanner, Object vs. Scrambled)
1일차 1st learing과 2일차 1st learning은 할당된 물체 자극을 제외하고는 동일한 절차로 수행되었다. 1일차 학습이 진행된 후 5일이 지난 뒤 2일차 학습 및 스캔 단계가 진행하여 1일차에 학습한 물체들이 충분히 공고화 될 수 있도록 유도하고자 하였다. 학습의 목적은 참가자들에게 각 범주의 물체 자극들을 반복적으로 노출시켜 물체 자극들에 대해 친숙해지도록 하는 것이었다. 이를 통해 물체들을 이루는 요소와 그 요소들 간의 결합 관계를 자연스럽게 학습할 수 있도록 하고, 그 과정이 휴지기의 유무에 따라 달라지는지 검증하여 공고화의 효과를 확인하고자 하였다.
두 학습 단계에서 자극 할당은 다음과 같이 이루어졌다. 참가자 내에서 공고화 조건을 조작하기 위해 4개의 물체 범주 자극을 2개씩 구분하였다. 그리고 2개씩 구분된 범주 각각에서 첫 번째 자극 세트(물체 33개)를 1일차 및 2일차 학습 단계에 각각 할당하였다. 예를 들어, 1일차 학습 단계에 1번과 2번 자극 범주의 첫 번째 세트(물체 33개)가 할당됨에 따라 총 66개의 1일차 물체 자극이 구성되었다. 2일차 학습 단계에는 동일하게 3번과 4번 자극 범주의 첫 번째 세트가 할당되어 66개의 2일차 물체 자극이 구성되었다. 결과적으로 Consolidated 조건의 물체 범주 자극과 Immediate 조건의 물체 범주 자극이 구성되었다. 각 일차에 어떤 자극 범주들이 할당되는지는 참가자에 걸쳐 역균형화 하였다.
참가자들이 물체와 범주를 주의 깊게 학습하고, 충분히 친숙해질 수 있도록 하기 위해 피드백 기반 범주 판단 과제를 5번 반복 수행하였다. 구체적으로, 66개의 물체를 하나씩 보면서 이 물체가 해당 일차에 할당된 두 가지 범주 중 어떤 범주에 속하는지 구분하도록 하였다.
각 시행은 0.5초의 응시점으로 시작하였다. 이어서 물체 자극 1개와 범주를 지칭하는 선택지 2개를 4초간 제시되었고 참가자는 4초의 시간 내에서 해당 물체가 어떤 범주에 속하는지 판단하였다. 4초가 모두 지나면 참가자의 반응이 맞았는지 틀렸는지 여부와 해당 물체가 실제로 어떤 범주에 속하는지를 1.5초간 피드백으로 제공되었다. 0.5초의 빈 화면 이후 다음 시행 시작되었다.
이러한 절차로 2개 범주의 66개의 물체를 보여주어 66개의 시행이 구성되었으며, 참가자들은 이 과제를 총 5번 반복 수행하였다. 결과적으로, 66개의 물체에 대한 범주 판단을 총 5 블록으로 반복 수행되었다. 블록 간 휴식 시간 부여되었으며 모든 절차에는 약 1시간의 시간이 소요되었다. 참가자들이 각 범주와 물체를 잘 학습하였는지 확인하기위해 참가자들의 범주 판단 정확률과 반응 시간을 측정하였다.
b1d1 <- read.csv("data/b1d1_v1.csv", header = T)
b1d2 <- read.csv("data/b1d2_v1.csv", header = T)
b1 <- rbind(b1d1, b1d2)
# check number of trials for each condition/sn
table(b1$sn)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94
## 660 660 660 660 660 660 660 660 660 660 660 660 660 660 660 660 660 660 660 660
## 96 97 98 99
## 660 660 660 660
table(b1$cL_num, b1$sn)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 1 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165
## 2 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165
## 3 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165
## 4 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165 165
##
## 94 96 97 98 99
## 1 165 165 165 165 165
## 2 165 165 165 165 165
## 3 165 165 165 165 165
## 4 165 165 165 165 165
# change class of main factors: double to factor
b1$sn = factor(b1$sn)
b1$task = factor(b1$task)
b1$cCons = factor(b1$cCons, levels=c(1,2), labels=c("cons","imm"))
b1$cL_num = factor(b1$cL_num)
b1$cL_num = factor(b1$cL_num)
b1$dIm_Name = factor(b1$dIm_Name)
b1$dComp1 = factor(b1$dComp1)
b1$dComp2 = factor(b1$dComp2)
b1$dCorr <- as.numeric(b1$dCorr==1)
b1 <- b1 %>% dplyr::select(sn, task, blk, cCons, cL_num, cL_num, cSet, dIm_Name, dComp1, dComp2, cCat, dResp, dRt, dCorr)
headTail(b1)
## sn task blk cCons cL_num cSet dIm_Name dComp1 dComp2 cCat dResp dRt
## 1 1 1 1 cons 2 1 2_03_05.png 3 5 2 1 2.25
## 2 1 1 1 cons 2 1 2_10_14.png 10 14 2 2 2.12
## 3 1 1 1 cons 1 1 1_02_11.png 2 11 1 2 1.82
## 4 1 1 1 cons 1 1 1_04_12.png 4 12 1 2 2.38
## ... <NA> <NA> ... <NA> <NA> ... <NA> <NA> <NA> ... ... ...
## 15837 99 1 5 imm 4 1 4_07_16.png 7 16 2 2 2.33
## 15838 99 1 5 imm 3 1 3_01_14.png 1 14 1 1 3.61
## 15839 99 1 5 imm 4 1 4_09_16.png 9 16 2 2 0.99
## 15840 99 1 5 imm 3 1 3_01_02.png 1 2 1 1 1.65
## dCorr
## 1 0
## 2 1
## 3 0
## 4 0
## ... ...
## 15837 1
## 15838 1
## 15839 1
## 15840 1
glimpse(b1, width = 70)
## Rows: 15,840
## Columns: 13
## $ sn <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ task <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ blk <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ cCons <fct> cons, cons, cons, cons, cons, cons, cons, cons, con…
## $ cL_num <fct> 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 1, …
## $ cSet <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ dIm_Name <fct> 2_03_05.png, 2_10_14.png, 1_02_11.png, 1_04_12.png,…
## $ dComp1 <fct> 3, 10, 2, 4, 5, 5, 1, 1, 5, 2, 2, 4, 2, 8, 3, 1, 6,…
## $ dComp2 <fct> 5, 14, 11, 12, 12, 9, 10, 3, 8, 5, 9, 5, 12, 14, 10…
## $ cCat <int> 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 1, …
## $ dResp <int> 1, 2, 2, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, …
## $ dRt <dbl> 2.2477, 2.1229, 1.8217, 2.3835, 1.3479, 3.4639, 2.6…
## $ dCorr <dbl> 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, …
length(unique(b1$sn))
## [1] 241일차 1st learing과 2일차 1st learning에서 참가자 들의 반복 학습에 따라 반응 시간이 빨라지는지 분석하였다. 분석에는 올바르게 반응한 시행만 포함되었다. 자동적 반응(<200ms)과 과도하게 늦은 반응(>10000ms)을 제거하였고, 평균으로부터 +-3SD를 넘는 시행을 가외치로 판단하여 제거하였다. 아래에 두 조건과 블록 반복에 따른 반응시간 변화를 요약하였다.
cb1 <- b1 %>% filter(dCorr == 1) # filter(dCorr == 1) # remove incorrect trial
# check accuracy
100-100*(nrow(cb1)/nrow(b1))
## [1] 19.47601
# 0.00% indCorrect trials were not analyzed
# trimming 3sd outlier trials
tb1 <- cb1
tb1 <- cb1 %>% filter(dRt > .200 & dRt < 10.000) %>%
group_by(sn) %>% # grouping by padRticipants
nest() %>%
mutate(lbound = map(data, ~mean(.$dRt)-3*sd(.$dRt)),
ubound = map(data, ~mean(.$dRt)+3*sd(.$dRt))) %>% # make new data (3sd cut)
unnest(c(lbound, ubound))%>%
unnest(data) %>%
mutate(Outlier = (dRt < lbound)|(dRt > ubound)) %>% # set outlier
filter(Outlier == FALSE) %>% # filtering outlier
ungroup() %>%
dplyr::select(sn, task, blk, cCons, cL_num, cL_num, cSet, dIm_Name, dComp1, dComp2, cCat, dResp, dRt, dCorr) # select variables to analyze
# outlier trial ratio
100-100*(nrow(tb1)/nrow(cb1))
## [1] 1.419051
# mean number of trials for each conditions
tb1 %>% group_by(sn, cCons, cL_num) %>%
dplyr::summarise(NumTrial = length(dRt)) %>%
ungroup() %>%
group_by(cCons, cL_num) %>%
dplyr::summarise(Mean = mean(NumTrial),
Median = median(NumTrial),
Min = min(NumTrial),
Max = max(NumTrial)) %>%
ungroup %>%
kable(digits=2)
## `summarise()` has grouped output by 'sn', 'cCons'. You can override using the `.groups` argument.
## `summarise()` has grouped output by 'cCons'. You can override using the `.groups` argument.| cCons | cL_num | Mean | Median | Min | Max |
|---|---|---|---|---|---|
| cons | 1 | 123.83 | 131.0 | 87 | 145 |
| cons | 2 | 128.25 | 128.0 | 86 | 158 |
| cons | 3 | 135.83 | 140.5 | 109 | 154 |
| cons | 4 | 125.83 | 128.0 | 90 | 146 |
| imm | 1 | 128.08 | 131.5 | 99 | 152 |
| imm | 2 | 124.00 | 131.5 | 88 | 158 |
| imm | 3 | 143.08 | 149.0 | 94 | 163 |
| imm | 4 | 138.92 | 144.5 | 83 | 161 |
# check Distribution
# before trimming
den1 <- ggplot(cb1, aes(x=dRt)) +
geom_density() +
theme_bw(base_size = 18) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank())
# after trimming
den2 <- ggplot(tb1, aes(x=dRt)) +
geom_density() +
theme_bw(base_size = 18) +
labs(x = "Trimmed dRt") +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank())
den1 + den2
# subject-level, long format
b1dRtL <- tb1 %>% group_by(sn, cCons, blk) %>%
dplyr::summarise(dRt = mean(dRt)) %>%
ungroup()
## `summarise()` has grouped output by 'sn', 'cCons'. You can override using the `.groups` argument.
# b1dRtL %>% kable(digits=2)
# subject-level, wide format (sn/Btw/cL_num)
b1dRtW <- b1dRtL %>% spread(key=cCons, value = dRt)
# b1dRtW %>% kable(digits=2)
# summary table: grand mean (eyerep/locrep)
b1dRtG <- b1dRtL %>% group_by(cCons, blk) %>%
dplyr::summarise(dRt.m = mean(dRt), dRt.sd = sd(dRt)) %>%
ungroup()
## `summarise()` has grouped output by 'cCons'. You can override using the `.groups` argument.
b1dRtG$dRt.se <- Rmisc::summarySEwithin(data = b1dRtL, measurevar = "dRt",
idvar = "sn", withinvars = c("cCons", "blk"))$se
## Automatically converting the following non-factors to factors: blk
b1dRtG$dRt.ci <- Rmisc::summarySEwithin(data = b1dRtL, measurevar = "dRt",
idvar = "sn", withinvars = c("cCons", "blk"))$ci
## Automatically converting the following non-factors to factors: blk
b1dRtG <- b1dRtG %>%
mutate(lower.ci = dRt.m-dRt.ci,
upper.ci = dRt.m+dRt.ci)
b1dRtG %>% dplyr::select(cCons, blk, dRt.m) %>%
spread(key=blk, value=dRt.m) %>% kable(digits=2)| cCons | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| cons | 1.62 | 1.55 | 1.42 | 1.26 | 1.17 |
| imm | 1.53 | 1.37 | 1.28 | 1.18 | 1.17 |
b1dRtG %>% kable(digits=2)| cCons | blk | dRt.m | dRt.sd | dRt.se | dRt.ci | lower.ci | upper.ci |
|---|---|---|---|---|---|---|---|
| cons | 1 | 1.62 | 0.38 | 0.06 | 0.13 | 1.50 | 1.75 |
| cons | 2 | 1.55 | 0.42 | 0.05 | 0.11 | 1.44 | 1.66 |
| cons | 3 | 1.42 | 0.45 | 0.05 | 0.10 | 1.32 | 1.52 |
| cons | 4 | 1.26 | 0.33 | 0.03 | 0.07 | 1.20 | 1.33 |
| cons | 5 | 1.17 | 0.37 | 0.03 | 0.07 | 1.10 | 1.23 |
| imm | 1 | 1.53 | 0.39 | 0.04 | 0.08 | 1.44 | 1.61 |
| imm | 2 | 1.37 | 0.44 | 0.04 | 0.08 | 1.29 | 1.45 |
| imm | 3 | 1.28 | 0.42 | 0.04 | 0.09 | 1.19 | 1.37 |
| imm | 4 | 1.18 | 0.43 | 0.04 | 0.09 | 1.10 | 1.27 |
| imm | 5 | 1.17 | 0.42 | 0.04 | 0.08 | 1.09 | 1.25 |
1일차 1st learing과 2일차 1st learning에서 참가자 들의 반복 학습에 따라 정확도가 향상되는지 분석하였다. 아래에 두 조건과 블록 반복에 따른 정확도 변화를 요약하였다.
b1acc.sn <- b1 %>% filter(blk>=4) %>% group_by(sn) %>%
dplyr::summarise(Acc = mean(dCorr)*100) %>%
ungroup()
# b1acc.sn %>% spread(sn, Acc) %>% kable(digits=2)
# subject-level, long format (sn/Btw/cL_num)
b1accL <- b1 %>% group_by(sn, blk, cCons) %>%
dplyr::summarise(Acc = mean(dCorr)*100) %>%
ungroup()
## `summarise()` has grouped output by 'sn', 'blk'. You can override using the `.groups` argument.
# b1accL %>% kable(digits=2)
# subject-level, wide format (sn/Btw/cL_num)
b1accW1 <- b1accL %>% spread(key=cCons, value = Acc)
# b1accW1 %>% kable(digits=2)
# summary table: grand mean (eyerep/locrep)
b1accG <- b1accL %>% group_by(cCons, blk) %>%
dplyr::summarise(Acc.m = mean(Acc), Acc.sd = sd(Acc)) %>%
ungroup()
## `summarise()` has grouped output by 'cCons'. You can override using the `.groups` argument.
b1accG$Acc.se <- Rmisc::summarySEwithin(data = b1accL, measurevar = "Acc",
idvar = "sn", withinvars = c("cCons","blk"))$se
## Automatically converting the following non-factors to factors: blk
b1accG$Acc.ci <- Rmisc::summarySEwithin(data = b1accL, measurevar = "Acc",
idvar = "sn", withinvars = c("cCons","blk"))$ci
## Automatically converting the following non-factors to factors: blk
b1accG <- b1accG %>%
mutate(lower.ci = Acc.m-Acc.ci,
upper.ci = Acc.m+Acc.ci)
# for between-subject design. check help(summarySE)
b1accG %>% dplyr::select(cCons, blk, Acc.m) %>%
spread(key=blk, value=Acc.m) %>%
kable(digits=2)| cCons | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| cons | 59.03 | 74.24 | 83.52 | 88.13 | 91.10 |
| imm | 64.77 | 79.61 | 85.54 | 88.32 | 90.97 |
b1accG %>% kable(digits=2)| cCons | blk | Acc.m | Acc.sd | Acc.se | Acc.ci | lower.ci | upper.ci |
|---|---|---|---|---|---|---|---|
| cons | 1 | 59.03 | 9.41 | 1.85 | 3.83 | 55.19 | 62.86 |
| cons | 2 | 74.24 | 11.71 | 1.79 | 3.71 | 70.54 | 77.95 |
| cons | 3 | 83.52 | 13.66 | 1.42 | 2.93 | 80.59 | 86.45 |
| cons | 4 | 88.13 | 12.82 | 1.34 | 2.77 | 85.36 | 90.90 |
| cons | 5 | 91.10 | 11.97 | 1.66 | 3.43 | 87.67 | 94.53 |
| imm | 1 | 64.77 | 12.84 | 1.87 | 3.87 | 60.90 | 68.64 |
| imm | 2 | 79.61 | 15.32 | 1.85 | 3.83 | 75.77 | 83.44 |
| imm | 3 | 85.54 | 14.49 | 1.63 | 3.36 | 82.18 | 88.90 |
| imm | 4 | 88.32 | 15.62 | 1.75 | 3.62 | 84.70 | 91.94 |
| imm | 5 | 90.97 | 12.22 | 1.58 | 3.27 | 87.71 | 94.24 |
두 조건의 블록 반복에 따른 반응 시간 & 정확도 변화를 그래프로 나타내었다. 두 조건 모두 블록 반복에 따라 학습이 잘 진행되어 반응 시간이 빨라지고 정확도가 향상되었다. 마지막 블록에서 두 조건 간 차이는 관찰되지 않았다.
# values = c("#F17402", "#2C57AA")
# values = c("darkred", "darkblue")
b1.dRt.plot0 <- ggplot(b1dRtG, mapping=aes(x=blk, y=dRt.m, group=cCons)) +
geom_ribbon(b1dRtG, mapping=aes(ymin=lower.ci, ymax=upper.ci, fill=cCons), alpha=0.3) +
geom_line(b1dRtG, mapping=aes(x=blk, y=dRt.m, colour=cCons), size = 2, show.legend = F) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), labels = c("Consolidated","Immediate")) +
scale_color_manual(values = c("#F17402", "#2C57AA")) + # "#feb24c", "#91bfdb"
coord_cartesian(ylim = c(1, 2), clip = "on") +
labs(x = "Block", y = "Response Time (s)", fill="Condition") +
theme_bw(base_size = 18) +
theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
# strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="top")
b1.acc.plot0 <- ggplot(b1accG, mapping=aes(x=blk, y=Acc.m, group=cCons)) +
geom_ribbon(b1accG, mapping=aes(ymin=lower.ci, ymax=upper.ci, fill=cCons), alpha=0.3) +
geom_line(b1accG, mapping=aes(x=blk, y=Acc.m, colour=cCons), size = 2, show.legend = F) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), labels = c("Consolidated","Immediate")) +
scale_color_manual(values = c("#F17402", "#2C57AA")) + # "#feb24c", "#91bfdb"
coord_cartesian(ylim = c(50, 100), clip = "on") +
labs(x = "Block", y = "Accuracy (%)", fill="Condition") +
theme_bw(base_size = 18) +
theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
# strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="top")
# b1.acc.plot0
fig1_1.behav <- ggarrange(b1.dRt.plot0, b1.acc.plot0)
fig1_1.behav# plot-control 1
#ggsave("s.fig.1.jpg", plot = fig1_1.behav, width=8, height=5, unit='in', dpi=600)# values = c("#E1812B", "#3173A1")
b1dRtL.1 <- b1dRtL %>% filter(blk==5)
b1dRtG.1 <- b1dRtG %>% filter(blk==5)
b1dRtW.1 <- b1dRtW %>% filter(blk==5)
b1.dRt.plot0.1 <- ggplot(data=b1dRtL.1, aes(x=cCons, y=dRt, fill=cCons)) +
stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9,
width = 0.8, size = 0.3, color='black') + # , show.legend = FALSE, colour="black",
# geom_pointrange(data=b1dRtG.1, aes(x = cCons, y=dRt.m, ymin = dRt.m-dRt.ci, ymax = dRt.m+dRt.ci),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
geom_segment(data=filter(b1dRtW.1), inherit.aes = FALSE,
aes(x=1, y=filter(b1dRtW.1)$cons,
xend=2, yend=filter(b1dRtW.1)$imm),
color="gray90", alpha = .7) +
geom_point(data=b1dRtL.1, aes(x=cCons, y=dRt, fill=cCons),
position=position_dodge(width = 0.8),
size=2, show.legend = FALSE, color="gray80") + # ,
geom_errorbar(data=b1dRtG.1, aes(x=cCons, y=dRt.m, ymin=lower.ci, ymax=upper.ci), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated", "Immediate")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"),
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 3), clip = "on") +
labs(x = "Condition", y = "Block 5 Response Time (s)", fill ="Condition") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
# strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="top")
# b1.dRt.plot0.1
b1accL.1 <- b1accL %>% filter(blk==5)
b1accG.1 <- b1accG %>% filter(blk==5)
b1accW1.1 <- b1accW1 %>% filter(blk==5)
b1.acc.plot0.1 <- ggplot(data=b1accL.1, aes(x=cCons, y=Acc, fill=cCons)) +
stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9,
width = 0.8, size = 0.3, color='black') +
geom_segment(data=filter(b1accW1.1), inherit.aes = FALSE,
aes(x=1, y=filter(b1accW1.1)$cons,
xend=2, yend=filter(b1accW1.1)$imm),
color="gray90", alpha = .7) +
geom_point(data=b1accL.1, aes(x=cCons, y=Acc, fill=cCons),
position=position_dodge(width = 0.8),
size=2, show.legend = FALSE, color="gray80") + # ,
geom_errorbar(data=b1accG.1, aes(x=cCons, y=Acc.m, ymin=lower.ci, ymax=upper.ci), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated", "Immediate")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"),
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(25, 100), clip = "on") +
labs(x = "Condition", y = "Block 5 Accuracy (s)", fill ="Condition") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
# strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="top")
# b1.acc.plot0.1
fig1_2.behav <- ggarrange(b1.dRt.plot0.1, b1.acc.plot0.1)
fig1_2.behav# plot-control 2
# ggsave("s.fig.2.jpg", plot = fig1_2.behav, width=8, height=5, unit='in', dpi=600)두 조건의 블록 반복에 따른 반응 시간 & 정확도 변화를 통계 분석 하였다.
마지막 블록에서 두 조건 간 반응 시간 차이는 유의하지 않았다.
b1dRtL.tmp <- b1dRtL %>% filter(blk == 5)
b1dRt.aov1 <- aov_ez(id="sn", dv="dRt", data = b1dRtL.tmp, within = c("cCons"))
# summary(r1.aov1)
nice(b1dRt.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cCons | 1, 23 | 0.03 | 0.01 | <.001 | .923 |
b1dRt.aov1.m1 <- emmeans(b1dRt.aov1 , pairwise ~ cCons, adjust = "bon", infer = c(TRUE, TRUE)) # adjust="bon" , "tukey", "none"
a = summary(b1dRt.aov1.m1$contrasts)
b = t_to_d(t= a$t.ratio, df_error = a$df, paired = T) %>% dplyr::select(d)
cbind(a,b) %>% dplyr::select(contrast, estimate, lower.CL, upper.CL, df, t.ratio, p.value, d) %>% kable(digits=3)| contrast | estimate | lower.CL | upper.CL | df | t.ratio | p.value | d |
|---|---|---|---|---|---|---|---|
| cons - imm | -0.005 | -0.114 | 0.104 | 23 | -0.097 | 0.923 | -0.02 |
p_h1 <- b1dRtL.tmp %>% rstatix::pairwise_t_test(dRt ~ cCons,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- b1dRtL.tmp %>% rstatix::cohens_d(dRt ~ cCons, paired=T, ci = ) %>%
dplyr::select(group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("group1", "group2")) %>% kable(digits=3)| group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|
| cons | imm | -0.005 | -0.114 | 0.104 | 23 | -0.097 | 0.923 | ns | -0.02 | negligible |
마지막 블록에서 두 조건 간 정확도 차이는 유의하지 않았다.
b1accL.tmp <- b1accL %>% filter(blk == 5)
b1acc.aov1 <- aov_ez(id="sn", dv="Acc", data = b1accL.tmp, within = c("cCons"))
# summary(r1.aov1)
nice(b1acc.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cCons | 1, 23 | 86.13 | 0.00 | <.001 | .963 |
b1acc.aov1.m1 <- emmeans(b1acc.aov1, pairwise ~ cCons, adjust = "bon", infer = c(TRUE, TRUE)) # adjust="bon" , "tukey", "none"
a = summary(b1acc.aov1.m1$contrasts)
b = t_to_d(t= a$t.ratio, df_error = a$df, paired = T) %>% dplyr::select(d)
cbind(a,b) %>% dplyr::select(contrast, estimate, lower.CL, upper.CL, df, t.ratio, p.value, d) %>% kable(digits=3)| contrast | estimate | lower.CL | upper.CL | df | t.ratio | p.value | d |
|---|---|---|---|---|---|---|---|
| cons - imm | 0.126 | -5.416 | 5.668 | 23 | 0.047 | 0.963 | 0.01 |
p_h1 <- b1accL.tmp%>% rstatix::pairwise_t_test(Acc ~ cCons,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- b1accL.tmp %>% rstatix::cohens_d(Acc ~ cCons, paired=T, ci = F) %>%
dplyr::select(group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("group1", "group2")) %>% kable(digits=3)| group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|
| cons | imm | 0.126 | -5.416 | 5.668 | 23 | 0.047 | 0.963 | ns | 0.01 | negligible |
본 실험에는 4개의 물체 범주가 사용되었다. 마지막 블록에서 물체 범주 간 학습 차이가 있는지 확인하기 위한 분석을 수행하였다.
b1acc.sn <- b1 %>% filter(blk==5) %>% group_by(sn, cL_num) %>%
dplyr::summarise(Acc = mean(dCorr)*100) %>%
ungroup()
## `summarise()` has grouped output by 'sn'. You can override using the `.groups` argument.
# b1acc.sn %>% spread(cL_num, Acc) %>% kable(digits=2)
# subject-level, long format (sn/Btw/cL_num)
b1accL <- b1 %>% group_by(sn, blk, cL_num) %>%
dplyr::summarise(Acc = mean(dCorr)*100) %>%
ungroup()
## `summarise()` has grouped output by 'sn', 'blk'. You can override using the `.groups` argument.
# b1accL %>% kable(digits=2)
# subject-level, wide format (sn/Btw/cL_num)
b1accW1 <- b1accL %>% spread(key=cL_num, value = Acc)
# b1accW1 %>% kable(digits=2)
# summary table: grand mean (eyerep/locrep)
b1accG <- b1accL %>% group_by(cL_num, blk) %>%
dplyr::summarise(Acc.m = mean(Acc), Acc.sd = sd(Acc)) %>%
ungroup()
## `summarise()` has grouped output by 'cL_num'. You can override using the `.groups` argument.
b1accG$Acc.se <- Rmisc::summarySEwithin(data = b1accL, measurevar = "Acc",
idvar = "sn", withinvars = c("cL_num","blk"))$se
## Automatically converting the following non-factors to factors: blk
b1accG$Acc.ci <- Rmisc::summarySEwithin(data = b1accL, measurevar = "Acc",
idvar = "sn", withinvars = c("cL_num","blk"))$ci
## Automatically converting the following non-factors to factors: blk
b1accG <- b1accG %>%
mutate(lower.ci = Acc.m-Acc.ci,
upper.ci = Acc.m+Acc.ci)
# for between-subject design. check help(summarySE)
b1accG %>% dplyr::select(cL_num, blk, Acc.m) %>%
spread(key=blk, value=Acc.m) %>%
kable(digits=2)| cL_num | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 1 | 57.20 | 71.09 | 81.44 | 88.38 | 90.28 |
| 2 | 60.48 | 73.11 | 81.69 | 84.34 | 89.14 |
| 3 | 65.78 | 85.73 | 89.77 | 92.05 | 93.81 |
| 4 | 64.14 | 77.78 | 85.23 | 88.13 | 90.91 |
물체 범주 3이 다른 범주들보다 요약치 상에서 더 우수한 정확도를 보이긴 했으나 통계적 차이는 유의하지 않았다. 따라서 본 실험의 결과에 물체 범주 간 차이가 큰 영향을 줄 가능성은 적어보인다.
b1accL.1 <- b1accL %>% filter(blk==5)
b1accG.1 <- b1accG %>% filter(blk==5)
b1accW1.1 <- b1accW1 %>% filter(blk==5)
b1.acc.plot0.1 <- ggplot(data=b1accL.1, aes(x=cL_num, y=Acc, fill=cL_num)) +
stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9,
width = 0.8, size = 0.3, color='black') + # , show.legend = FALSE, colour="black",
geom_point(data=b1accL.1, aes(x=cL_num, y=Acc, fill=cL_num),
position=position_dodge(width = 0.8),
size=2, show.legend = FALSE, color="gray80") + # ,
geom_errorbar(data=b1accG.1, aes(x=cL_num, y=Acc.m, ymin=lower.ci, ymax=upper.ci), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=b1accG.1, aes(x = cL_num, y=Acc.m, ymin = lower.ci, ymax = upper.ci),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("L1", "L2","L3", "L4")) +
scale_fill_manual(values = c("#D99694", "#FAC090", "#C3D69B", "#93CDDD"),
labels = c("L1", "L2","L3", "L4")) +
coord_cartesian(ylim = c(25, 100), clip = "on") +
labs(x = "Language", y = "Block 5 Accuracy (s)", fill ="Language") +
theme_bw(base_size = 18) +
theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
# strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="top")
b1.acc.plot0.1b1accL.tmp <- b1accL %>% filter(blk == 5)
b1acc.aov1 <- aov_ez(id="sn", dv="Acc", data = b1accL.tmp, within = c("cL_num"))
# summary(r1.aov1)
nice(b1acc.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cL_num | 2.00, 46.03 | 126.75 | 1.13 | .047 | .333 |
b1acc.aov1.m1 <- emmeans(b1acc.aov1, pairwise ~ cL_num, adjust = "bon", infer = c(TRUE, TRUE)) # adjust="bon" , "tukey", "none"
a = summary(b1acc.aov1.m1$contrasts)
b = t_to_d(t= a$t.ratio, df_error = a$df, paired = T) %>% dplyr::select(d)
cbind(a,b) %>% dplyr::select(contrast, estimate, lower.CL, upper.CL, df, t.ratio, p.value, d) %>% kable(digits=3)| contrast | estimate | lower.CL | upper.CL | df | t.ratio | p.value | d |
|---|---|---|---|---|---|---|---|
| X1 - X2 | 1.136 | -5.581 | 7.854 | 23 | 0.488 | 1.000 | 0.102 |
| X1 - X3 | -3.535 | -12.402 | 5.332 | 23 | -1.151 | 1.000 | -0.240 |
| X1 - X4 | -0.631 | -8.938 | 7.676 | 23 | -0.219 | 1.000 | -0.046 |
| X2 - X3 | -4.672 | -13.111 | 3.768 | 23 | -1.598 | 0.743 | -0.333 |
| X2 - X4 | -1.768 | -10.239 | 6.704 | 23 | -0.602 | 1.000 | -0.126 |
| X3 - X4 | 2.904 | -1.156 | 6.964 | 23 | 2.064 | 0.303 | 0.430 |
p_h1 <- b1accL.tmp%>% rstatix::pairwise_t_test(Acc ~ cL_num,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- b1accL.tmp %>% rstatix::cohens_d(Acc ~ cL_num, paired=T, ci = F) %>%
dplyr::select(group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("group1", "group2")) %>% kable(digits=3)| group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1.136 | -3.678 | 5.951 | 23 | 0.488 | 1.000 | ns | 0.100 | negligible |
| 1 | 3 | -3.535 | -9.890 | 2.820 | 23 | -1.151 | 1.000 | ns | -0.235 | small |
| 1 | 4 | -0.631 | -6.585 | 5.323 | 23 | -0.219 | 1.000 | ns | -0.045 | negligible |
| 2 | 3 | -4.672 | -10.721 | 1.377 | 23 | -1.598 | 0.744 | ns | -0.326 | small |
| 2 | 4 | -1.768 | -7.839 | 4.304 | 23 | -0.602 | 1.000 | ns | -0.123 | negligible |
| 3 | 4 | 2.904 | -0.006 | 5.814 | 23 | 2.064 | 0.302 | ns | 0.421 | small |
Session 2의 Scan Phase로 2nd Learning, Snapshot, LOC localizer phase가 진행되었다.
2nd Learning Phase의 목적은 1일차 및 2일차 학습과 공고화 과정을 걸쳐 이루어진 범주 물체에 대한 학습과 구조적 지식의 획득으로 동일 범주의 새로운 물체들에 대한 구조화된 표상을 할 수 있는지를 측정하고자 하는 것이었다. 이를 위해 2nd Learning Phase에서는 Session 1 & 2에서 학습한 물체들과 구성 요소는 동일하나 새롭게 결합된 New Objects 들이 제시되었다. 여기서 Session 1 1st Learning에서 학습한 물체 범주의 요소로 구성된 New objects는 Consolidated 조건이었고, Session 2 1st Learning에서 학습한 물체 범주의 요소로 구성된 New objects는 Immediate 조건이었다. 각 조건의 물체들은 event-related design과 block design이 결합된 mixed 디자인으로 제시되었다. 전체 과정에서 참가자들의 주의를 유지하기 위해 1-back task가 진행되었다. 단변량 분석을 위해 각 조건의 전반적인 신경 활성화 정도를 측정하였고, 다변량 패턴 분석을 위해 각 조건의 개별 물체에 대한 신경 패턴을 측정하였다.
Snapshot Phase는 2nd Learning Phase에 제시된 물체들을 구성하는 Consituents 각각의 신경 패턴을 측정하기위해 수행되었다. Consolidated 조건과 Immediate 조건을 이루는 물체들을 구성하는 물체 범주의 요소 자극들이 event-related 디자인으로 제시되었다. 참가자들은 1-back task를 수행하였다. 마찬가지로 각 조건의 전반적인 신경 활성화 정도와 개별 요소들에 대한 신경 패턴을 측정하였다.
LOC localizer Phase의 목적은 물체 선택적 시각 영역인 LOC를 참가자별로 특정하기 위함이었다. intact 물체과 scrambled 물체가 블록 디자인으로 제시되었으며 참가자들은 1-back task를 수행하였다. 각 조건의 전반적인 신경활성화를 측정 후 조건 간 비교를 통해 시각 피질 내에서 LOC를 참가자별로 특정하였다. 아래의 주요 분석들의 핵심 ROI는 식별된 LOC였다.
수집된 fMRI 데이터는 단변량 분석과 다변량 분석을 위한 표준 절차를 통해 전처리되었다. 전처리 과정에 대한 자세한 내용은 생략한다. 전처리된 EPI 데이터는 MNI template brain으로 Registration 되었다. 이에 따라 모든 분석은 Standard Space에서 수행되었다.
Regions of interest는 물체의 구조화된 표현을 측정하기 위한 물체 선택적 시각 영역, 그리고 Consolidation과 Schema proecess와 관련된 내측두엽 영역, 내측 전두영역으로 설정되었다. 구체적으로, 물체 선택적 시각 영역으로는 앞선 Localizer를 통해 식별된 bilateral LOC가 설정 되었으며, Consolidation & Schema 관련으로는 Freesurfer로 식별된 Anterior - Posterior Hippocampus와 functional connectivity analysis로 식별된 mPFC 영역이 설정되었다.
실험의 주요 가설은 아래와 같다.
구체적으로, 기존 경험의 Consolidation를 통해 기존 물체에 대한 구조화된 지식이 획득됨에 따라 이와 요소나 결합 관계를 공유하는 새로운 물체에 대한 구조화된 표상이 가능케 될 것으로 예상하였다. 이에 따른 세 가지 하위 가설은 다음과 같다.
아래에는 이 세 가지 가설을 검증하기 위한 세 가지 분석을 수행한 결과를 나타내었다.
첫 번째 가설은 공고화로 대상에 대한 구조적 지식이 획득됨에 따라, 유사한 대상에 대한 구조화된 표상이 촉진되어 대상이 잡음 집합이 아닌 완결된 물체로 지각되는 objectness 가 증가하고, 결과적으로 LOC의 활성화 정도가 증가한다는 것이었다. 이를 검증하기 위해, 2nd learning phase에서 수집된 신경 데이터를 대상으로 Object-selective ROI인 LOC 의 신경 신호가 Consolidated 조건에서 Immediate 조건보다 더 크게 나타나는지 단변량 비교 분석을 수행하였다. 분석의 주요 ROI는 LOC, left LOC, right LOC 였고, 추가로 Posterior Hippocampus, Anterior Hippocampus, mPFC에서도 동일한 분석을 수행하였다.
r1p1 <- read.csv("data/r1_p1_sum.csv", header = T)
r1 <- r1p1
glimpse(r1, width = 70)
## Rows: 1,056
## Columns: 5
## $ subj <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ cond <chr> "cons", "imm", "cons", "imm", "cons", "imm", "cons", "…
## $ roi <chr> "lloc", "lloc", "rloc", "rloc", "lloc31", "lloc31", "r…
## $ z <dbl> 15.55896000, 14.16044000, 8.58291000, 7.70793100, 7.83…
## $ phase <chr> "p1", "p1", "p1", "p1", "p1", "p1", "p1", "p1", "p1", …
# subj : 참가자 번호
# cond : condtiion, consolidation vs. immediate
# roi : 관심 상위 영역. rloc vs. lvwfa
# z : 활성화 정도를 나타내는 z statistics
r1_l <- r1
r1_l$subj = factor(r1_l$subj)
# targ_roi<- c("loc", "lloc", "rloc",
# "pf", "lpf", "rpf",
# "lloc31", "rloc31",
# "v1", "v2", "v3", "v4",
# "bhpp", "lhpp", "rhpp", "la_hpp", "lp_hpp",
# "ra_hpp", "rp_hpp", "p_hpp", "a_hpp",
# "mpfc")
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc")
r1_l <- r1_l %>% filter(roi %in% targ_roi)
# r1_l <- r1_l %>% filter(subj!=99)
r1_l$cond = factor(r1_l$cond, levels=c("cons","imm"),labels=c("cons","imm"))
r1_l$roi = factor(r1_l$roi,
levels=c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc"),
labels=c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc"))
r1_l <- r1_l %>% dplyr::select(subj,roi,cond,z)
length(unique(r1_l$subj))
## [1] 24
# check number of trials for each condition/subj
table(r1_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
table(r1_l$cond, r1_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## cons 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## imm 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
table(r1_l$roi, r1_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## loc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## lloc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## rloc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## p_hpp 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## a_hpp 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## mpfc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2각 ROI 에서 조건에 따른 신경 활성화 정도를 요약하였다.
# subject-level, long format
r1_allL <- r1_l %>% group_by(subj, roi, cond) %>%
dplyr::summarise(z=mean(z)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
# r1_allL %>% kable(digits=2)
# subject-level, wide format
r1_allW <- r1_allL %>% spread(key=cond, value = z)
# r1_allW %>% kable(digits=2)
r1_allW1 <- r1_allL %>% spread(key=roi, value=z)
# r1_allW1 %>% kable(digits=2)
r1_allW2 <- r1_allL %>% spread(key=cond, value=z)
# r1_allW2 %>% filter(phase ==1, roi=="loc") %>% kable(digits=2)
# summary table: grand mean
r1_allG <- r1_allL %>% group_by(roi, cond) %>%
dplyr::summarise(z.m = mean(z), z.sd = sd(z)) %>%
ungroup()
## `summarise()` has grouped output by 'roi'. You can override using the `.groups` argument.
r1_allG$z.se <- Rmisc::summarySEwithin(data = r1_allL, measurevar = "z",
idvar = "subj", withinvars = c("roi","cond"))$se
r1_allG$z.ci <- Rmisc::summarySEwithin(data = r1_allL, measurevar = "z",
idvar = "subj", withinvars = c("roi", "cond"))$ci
r1_allG <- r1_allG %>%
mutate(lower.ci = z.m-z.ci,
upper.ci = z.m+z.ci,
lower.se = z.m-z.se,
upper.se = z.m+z.se)
r1_allG %>% dplyr::select(roi, cond, z.m) %>%
spread(key=roi, value=z.m) %>% kable(digits=2)| cond | loc | lloc | rloc | p_hpp | a_hpp | mpfc |
|---|---|---|---|---|---|---|
| cons | 7.66 | 7.80 | 7.76 | 1.24 | 0.30 | -0.88 |
| imm | 6.97 | 7.12 | 7.02 | 1.01 | 0.05 | -1.28 |
# phase 1
targ_roi = c("loc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
r1_allW.p1 <- r1_allW %>% filter(roi %in% targ_roi)
r1_allG.p1 <- r1_allG %>% filter(roi %in% targ_roi)
r1.p1.all.plot1 <- ggplot(data=r1_allL.p1, aes(x=cond, y=z, fill=cond, shpae=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31",
"v1" = "V1",
"v2" = "V2",
"v3" = "V3",
"v4" = "V4"))) +
# geom_dotplot(binaxis = "y", stackdir = "center", stackratio = 0.5,
# color = "black", alpha = 0.5, #position = "nudge",
# position = position_jitter(0.15),
# inherit.aes = TRUE, binwidth = 0.4) +
# geom_jitter(aes(x=cond, y=z, fill=cond,color = cond),
# position=position_jitter(0.1), cex=2
# ) +
geom_point(data=r1_allL.p1, aes(x=cond, y=z, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r1_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r1_allW.p1)$cons,
xend=2, yend=filter(r1_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r1_allG.p1, aes(x=cond, y= z.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# scale_color_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
# labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 15), clip = "on") +
labs(x = "Condition", y = "Parameter Estimation (Z)") +
ggtitle("Objects") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
#ggsave("fig1_1.fmri.jpg", plot = r1.p1.all.plot1, width=4, height=6, unit='in', dpi=600)
r1.p1.all.plot1targ_roi = c("lloc", "rloc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
r1_allW.p1 <- r1_allW %>% filter(roi %in% targ_roi)
r1_allG.p1 <- r1_allG %>% filter(roi %in% targ_roi)
r1.p1.all.plot2 <- ggplot(data=r1_allL.p1, aes(x=cond, y=z, fill=cond, shpae=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31",
"v1" = "V1",
"v2" = "V2",
"v3" = "V3",
"v4" = "V4"))) +
# geom_dotplot(binaxis = "y", stackdir = "center", stackratio = 0.5,
# color = "black", alpha = 0.5, #position = "nudge",
# position = position_jitter(0.15),
# inherit.aes = TRUE, binwidth = 0.4) +
# geom_jitter(aes(x=cond, y=z, fill=cond,color = cond),
# position=position_jitter(0.1), cex=2
# ) +
geom_point(data=r1_allL.p1, aes(x=cond, y=z, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r1_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r1_allW.p1)$cons,
xend=2, yend=filter(r1_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r1_allG.p1, aes(x=cond, y= z.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# scale_color_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
# labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 15), clip = "on") +
labs(x = "Condition", y = "Parameter Estimation (Z)") +
ggtitle("Objects") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r1.p1.all.plot2targ_roi = c("p_hpp", "a_hpp", "mpfc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
r1_allW.p1 <- r1_allW %>% filter(roi %in% targ_roi)
r1_allG.p1 <- r1_allG %>% filter(roi %in% targ_roi)
r1.p1.all.plot2 <- ggplot(data=r1_allL.p1, aes(x=cond, y=z, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"la_hpp" = "l-a HIP",
"lp_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
# geom_dotplot(binaxis = "y", stackdir = "center", stackratio = 0.7,
# color = "black", alpha = 0.5, position = "dodge",
# inherit.aes = TRUE, binwidth = 0.008) +
geom_point(data=r1_allL.p1, aes(x=cond, y=z, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r1_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r1_allW.p1)$cons,
xend=2, yend=filter(r1_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r1_allG.p1, aes(x=cond, y= z.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(-5, 15), clip = "on") +
labs(x = "Condition", y = "Parameter Estimation (Z)") +
ggtitle("Objects") +
theme_bw(base_size = 18) +
theme(#axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
# plot-control 5
r1.p1.all.plot2각 ROI에서 조건에 따른 활성화 차이를 통계 분석하였다.
combined LOC의 결과는 아래와 같다.
targ_roi<- c("loc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
r1.aov1 <- aov_ez(id="subj", dv="z", data = r1_allL.p1, within = c("cond"))
#anova_table = list(correction = "none"))
nice(r1.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.44 | 12.93 ** | .360 | .002 |
targ_roi<- c("loc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
p_h1 <- r1_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(z ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r1_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(z ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | imm | 0.691 | 0.294 | 1.089 | 23 | 3.595 | 0.002 | ** | 0.734 | moderate |
left & right LOC의 결과는 아래와 같다.
targ_roi<- c("lloc", "rloc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
r1.aov1 <- aov_ez(id="subj", dv="z", data = r1_allL.p1, within = c("cond", "roi"))
#anova_table = list(correction = "none"))
nice(r1.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.90 | 13.37 ** | .368 | .001 |
| roi | 1, 23 | 7.29 | 0.02 | <.001 | .903 |
| cond:roi | 1, 23 | 0.14 | 0.17 | .007 | .683 |
p_h1 <- r1_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(z ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r1_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(z ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi" ,"group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | imm | 0.675 | 0.284 | 1.067 | 23 | 3.571 | 0.002 | ** | 0.729 | moderate |
| rloc | cons | imm | 0.738 | 0.274 | 1.201 | 23 | 3.291 | 0.003 | ** | 0.672 | moderate |
Anterior-Posterior Hippocampus, mPFC에서 조건 간 활성화 차이는 다음과 같다.
targ_roi = c("a_hpp", "p_hpp","mpfc")
r1_allL.p1 <- r1_allL %>% filter(roi %in% targ_roi)
r1.aov1 <- aov_ez(id="subj", dv="z", data = r1_allL.p1, within = c("cond", "roi"))
#anova_table = list(correction = "none"))
nice(r1.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.78 | 3.94 + | .146 | .059 |
| roi | 1.23, 28.40 | 1.85 | 51.30 *** | .690 | <.001 |
| cond:roi | 1.60, 36.86 | 0.16 | 0.75 | .032 | .451 |
p_h1 <- r1_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(z ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r1_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(z ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi" ,"group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | imm | 0.253 | -0.094 | 0.600 | 23 | 1.507 | 0.145 | ns | 0.308 | small |
| mpfc | cons | imm | 0.394 | -0.020 | 0.808 | 23 | 1.967 | 0.061 | ns | 0.401 | small |
| p_hpp | cons | imm | 0.229 | -0.048 | 0.505 | 23 | 1.711 | 0.100 | ns | 0.349 | small |
두 번째 가설은 Consolidation으로 물체에 대한 구조화된 표상이 촉진됨에 따라 유사한 물체를 이루는 의미 있는 요소가 잘 파악되어, 요소들의 신경 패턴으로 그 요소들로 구성된 물체의 신경 패턴을 설명하는 정도가 증가한다는 것이었다. consolidation이 요소들의 신경 패턴으로 물체의 신경 패턴을 설명하는 정도를 증가시키는지 확인하기 위해 Constituent Explainability Analysis를 수행하였다.
2nd learning phase에서 획득된 각 물체들의 LOC 신경 패턴과 snapshot phase에서 획득된 해당 물체들을 구성하는 요소들의 LOC 신경 패턴 간의 관계를 검증하기 위해, 요소들이 LOC 신경 패턴이 물체의 LOC 신경 패턴을 설명하는 General Linear Model (Y = b0 + B1*X1 + e)을 각 물체에 대해 구성하였다. Model의 dependent variable(response, Y)로는 물체의 LOC의 t-stats 패턴이 투입되었고, independent variable(predictor, X)는 그 물체를 구성하는 두 요소들의 LOC t-stats 패턴이 평균된 결합 패턴(synthetic pattern)이 투입되었다. 이 Model을 통해 두 조건에 포함된 각 물체들에 대해 요소의 패턴이 물체의 패턴을 얼마나 잘 설명하는지를 나타내는 Beta value를 획득하였다. Beta value를 조건별로 평균화하여 조건과 ROI를 요인으로 한 repeated-measures analysis of variance (RM-ANOVA)를 수행하였다.
r2n <- read.csv("data/r2_glmfit_sum.csv", header = T)
glimpse(r2n, width = 70)
## Rows: 864
## Columns: 9
## $ subj <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ roi <chr> "lloc", "rloc", "lloc31", "rloc31", "lhpp", …
## $ cond <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ beta_sum <dbl> 0.2028386000, 0.1389327000, 0.2517406000, 0.…
## $ beta_mean <dbl> 0.4704866000, 0.3063211000, 0.5331985000, 0.…
## $ beta_sum_other <dbl> 0.190867500, 0.115867800, 0.238368500, 0.241…
## $ beta_sum_diff <dbl> 0.0119710500, 0.0230649400, 0.0133721300, 0.…
## $ beta_mean_other <dbl> 0.44092610000, 0.26031930000, 0.52268880000,…
## $ beta_mean_diff <dbl> 0.029560530, 0.046001820, 0.010509750, 0.017…
r2n_l <- r2n
r2n_l$subj = factor(r2n_l$subj)
# r2n_l <- r2n_l %>% filter(subj!=99)
r2n_l$cond = factor(r2n_l$cond, levels=c(1,2),labels=c("cons","imm"))
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp",
"mpfc")
r2n_l <- r2n_l %>% filter(roi %in% targ_roi)
r2n_l$roi = factor(r2n_l$roi,
levels=c("loc","lloc","rloc",
"pf","lpf","rpf",
"lloc31","rloc31",
"bhpp","lhpp","rhpp", "a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"),
labels=c("loc","lloc","rloc",
"pf","lpf","rpf",
"lloc31","rloc31",
"bhpp","lhpp","rhpp", "a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"))
r2n_l$b_s <- r2n_l$beta_sum # sum of two ptt
r2n_l$b_m <- r2n_l$beta_mean # mean of two ptt
r2n_l$b_m_o <- r2n_l$beta_mean_other
r2n_l$b_m_d <- r2n_l$beta_mean_diff
r2n_l <- r2n_l %>% dplyr::select(subj,roi,cond, b_m, b_s, b_m_o, b_m_d)
length(unique(r2n_l$subj))
## [1] 24
# check number of trials for each condition/subj
table(r2n_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
table(r2n_l$cond, r2n_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## cons 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## imm 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
table(r2n_l$roi, r2n_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## loc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## lloc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## rloc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## pf 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## lpf 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## rpf 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## lloc31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## rloc31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## bhpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## lhpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## rhpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## a_hpp 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## p_hpp 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## la_hpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## lp_hpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## ra_hpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## rp_hpp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## mpfc 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2Beta value를 조건과 ROI에 따라 요약하였다.
# subject-level, long format
r2n_allL <- r2n_l %>% group_by(subj, roi, cond) %>%
dplyr::summarise(beta=mean(b_m)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
# r2n_allL %>% kable(digits=2)
# subject-level, wide format
r2n_allW <- r2n_allL %>% spread(key=cond, value = beta)
# r2n_allW %>% kable(digits=3)
# r2n_allW %>% filter(roi=="loc") %>% kable(digits=3)
r2n_allW1 <- r2n_allL %>% spread(key=roi, value=beta)
# r2n_allW1 %>% kable(digits=3)
# summary table: grand mean
r2n_allG <- r2n_allL %>% group_by(roi, cond) %>%
dplyr::summarise(beta.m = mean(beta), beta.sd = sd(beta)) %>%
ungroup()
## `summarise()` has grouped output by 'roi'. You can override using the `.groups` argument.
r2n_allG$beta.se <- Rmisc::summarySEwithin(data = r2n_allL, measurevar = "beta",
idvar = "subj", withinvars = c("roi","cond"))$se
r2n_allG$beta.ci <- Rmisc::summarySEwithin(data = r2n_allL, measurevar = "beta",
idvar = "subj", withinvars = c("roi", "cond"))$ci
r2n_allG <- r2n_allG %>%
mutate(lower.ci = beta.m-beta.ci,
upper.ci = beta.m+beta.ci,
lower.se = beta.m-beta.se,
upper.se = beta.m+beta.se)
targ_roi1 = c("loc", "lloc", "rloc", "p_hpp", "a_hpp","mpfc")
r2n_allG %>% filter(roi %in% targ_roi1) %>% dplyr::select(roi, cond, beta.m) %>%
spread(key=roi, value=beta.m) %>% kable(digits=3)| cond | loc | lloc | rloc | a_hpp | p_hpp | mpfc |
|---|---|---|---|---|---|---|
| cons | 0.285 | 0.299 | 0.259 | 0.012 | 0.013 | 0.001 |
| imm | 0.261 | 0.279 | 0.239 | 0.014 | 0.008 | 0.008 |
targ_roi = c("loc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r4.all.plot3 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v), inherit.aes = FALSE,
aes(x=1, y=filter(r2n_allW.v)$cons,
xend=2, yend=filter(r2n_allW.v)$imm),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 0.7), clip = "on") +
labs(x = "Condition", y = "Beta Value") +
ggtitle("Synthetic Pattern") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r4.all.plot3targ_roi = c("lloc", "rloc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r4.all.plot3 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v), inherit.aes = FALSE,
aes(x=1, y=filter(r2n_allW.v)$cons,
xend=2, yend=filter(r2n_allW.v)$imm),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 0.7), clip = "on") +
labs(x = "Condition", y = "Beta Value") +
ggtitle("Synthetic Pattern") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r4.all.plot3targ_roi = c("p_hpp", "a_hpp", "mpfc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r4.all.plot4 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"la_hpp" = "l-a HIP",
"lp_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v), inherit.aes = FALSE,
aes(x=1, y=filter(r2n_allW.v)$cons,
xend=2, yend=filter(r2n_allW.v)$imm),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(0, 0.6), clip = "on") +
labs(x = "Condition", y = "Beta Value") +
ggtitle("Synthetic Pattern") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r4.all.plot4주요 ROI 에서 조건 간 Beta Value 차이가 있는지 통계 분석을 수행하였다.
combined LOC 의 결과는 아래와 같다.
targ_roi = c("loc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
p_h1 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | imm | 0.024 | 0.009 | 0.039 | 23 | 3.32 | 0.003 | ** | 0.678 | moderate |
left & right LOC 의 결과는 아래와 같다.
targ_roi = c("lloc", "rloc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
r2n.aov1 <- aov_ez(id="subj", dv="beta", data = r2n_allL.tmp, within = c("cond", "roi"))
# summary(r2n.aov1)
nice(r2n.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 7.15 * | .237 | .014 |
| roi | 1, 23 | 0.02 | 2.06 | .082 | .164 |
| cond:roi | 1, 23 | 0.00 | 0.00 | <.001 | .952 |
p_h1 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | imm | 0.020 | 0.003 | 0.036 | 23 | 2.508 | 0.020 | * | 0.512 | moderate |
| rloc | cons | imm | 0.021 | 0.001 | 0.040 | 23 | 2.138 | 0.043 | * | 0.436 | small |
Posterior-Anterior Hippocampus와 mPFC의 결과는 아래와 같다.
targ_roi = c("p_hpp", "a_hpp", "mpfc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
r2n.aov1 <- aov_ez(id="subj", dv="beta", data = r2n_allL.tmp, within = c("cond", "roi"))
# summary(r2n.aov1)
nice(r2n.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 0.08 | .004 | .775 |
| roi | 1.53, 35.08 | 0.00 | 0.72 | .030 | .458 |
| cond:roi | 1.49, 34.36 | 0.00 | 0.84 | .035 | .411 |
p_h1 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | imm | -0.002 | -0.013 | 0.009 | 23 | -0.328 | 0.746 | ns | -0.067 | negligible |
| mpfc | cons | imm | -0.007 | -0.026 | 0.012 | 23 | -0.750 | 0.461 | ns | -0.153 | negligible |
| p_hpp | cons | imm | 0.005 | -0.007 | 0.016 | 23 | 0.823 | 0.419 | ns | 0.168 | negligible |
두 조건 간의 beta value 차이가 정말로 각 물체가 물체를 구성하는 요소들의 구조화된 결합으로 표상되는 정도를 나타나는 것인지를 확인하기 위해, 보조적 분석을 수행하였다. 위의 분석과 동일하게 각 물체가 그것을 구성하는 요소에 대해 설명되는 정도에 대한 Beta value를 획득하고 이를 Self 조건으로 명명하였다. 그리고 이와 유사하게, 그 물체가 물체에 포함되지 않는 다른 두 요소들의 조합에 의해 설명되는 정도를 계산하여 Other 조건을 구성하였다. 이러한 절차를 Consolidated 조건과 Immediate 조건 각각에서 수행하였다. 결과적으로 조건 (Consolidated vs. Immediate), ROI (6개), Type (Self vs. Other)의 세 변인이 구성되었다.
조건 (Consolidated vs. Immediate), ROI (6개), Type (Self vs. Other)을 요인으로 Beta value를 요약하였다.
# subject-level, long format
r2n_l_m <- r2n_l %>% dplyr::select(subj, roi, cond, b_m, b_m_o)
r2n_l_m <- gather(data = r2n_l_m, key = type, beta, b_m, b_m_o, factor_key=TRUE)
r2n_l_m$type <- factor(r2n_l_m$type,
levels = c("b_m", "b_m_o"),
labels = c("self", "other"))
# subject-level, long format
r2n_allL <- r2n_l_m %>% group_by(subj, roi, cond, type) %>%
dplyr::summarise(beta=mean(beta)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi', 'cond'. You can override using the `.groups` argument.
# r2n_allL %>% kable(digits=2)
# subject-level, wide format
#r2n_allW <- r2n_allL %>% spread(key=cond, value = beta)
r2n_allW <- r2n_allL %>% spread(key=type, value = beta)
# r2n_allW %>% kable(digits=3)
# r2n_allW %>% filter(roi=="loc") %>% kable(digits=3)
r2n_allW1 <- r2n_allL %>% spread(key=roi, value=beta)
# r2n_allW1 %>% kable(digits=3)
# summary table: grand mean
r2n_allG <- r2n_allL %>% group_by(roi, cond, type) %>%
dplyr::summarise(beta.m = mean(beta), beta.sd = sd(beta)) %>%
ungroup()
## `summarise()` has grouped output by 'roi', 'cond'. You can override using the `.groups` argument.
r2n_allG$beta.se <- Rmisc::summarySEwithin(data = r2n_allL, measurevar = "beta",
idvar = "subj", withinvars = c("roi","cond","type"))$se
r2n_allG$beta.ci <- Rmisc::summarySEwithin(data = r2n_allL, measurevar = "beta",
idvar = "subj", withinvars = c("roi", "cond","type"))$ci
r2n_allG <- r2n_allG %>%
mutate(lower.ci = beta.m-beta.ci,
upper.ci = beta.m+beta.ci,
lower.se = beta.m-beta.se,
upper.se = beta.m+beta.se)
targ_roi1 = c("loc", "lloc", "rloc", "p_hpp", "a_hpp", "mpfc")
r2n_allG %>% filter(roi %in% targ_roi1) %>% dplyr::select(roi, cond, type, beta.m) %>%
spread(key=roi, value=beta.m) %>% kable(digits=3)| cond | type | loc | lloc | rloc | a_hpp | p_hpp | mpfc |
|---|---|---|---|---|---|---|---|
| cons | self | 0.285 | 0.299 | 0.259 | 0.012 | 0.013 | 0.001 |
| cons | other | 0.271 | 0.292 | 0.245 | 0.006 | 0.010 | 0.002 |
| imm | self | 0.261 | 0.279 | 0.239 | 0.014 | 0.008 | 0.008 |
| imm | other | 0.261 | 0.281 | 0.237 | 0.008 | 0.011 | 0.011 |
targ_roi = c("loc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r2n.all.plot1 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=type)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=type), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v, cond == "cons"), inherit.aes = FALSE,
aes(x=0.8, y=filter(r2n_allW.v, cond == "cons")$self,
xend=1.2, yend=filter(r2n_allW.v, cond == "cons")$other),
color="gray90") +
geom_segment(data=filter(r2n_allW.v, cond == "imm"), inherit.aes = FALSE,
aes(x=1.8, y=filter(r2n_allW.v, cond == "imm")$self,
xend=2.2, yend=filter(r2n_allW.v, cond == "imm")$other),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated","Immediate")) +
scale_fill_manual(values = c("#feb24c", "#91bfdb"), # c("#F17402", "#2C57AA"), c()
labels = c("Self", "Other")) +
# coord_cartesian(ylim = c(-0.5, 0.7), clip = "on") +
labs(x = "Condition", y = "Beta Value") +
ggtitle("Self vs. Other") +
theme_bw(base_size = 18) +
theme(# axis.text.x=element_blank(),
# axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r2n.all.plot1targ_roi = c("lloc", "rloc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r2n.all.plot1 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=type)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=type), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v, cond == "cons"), inherit.aes = FALSE,
aes(x=0.8, y=filter(r2n_allW.v, cond == "cons")$self,
xend=1.2, yend=filter(r2n_allW.v, cond == "cons")$other),
color="gray90") +
geom_segment(data=filter(r2n_allW.v, cond == "imm"), inherit.aes = FALSE,
aes(x=1.8, y=filter(r2n_allW.v, cond == "imm")$self,
xend=2.2, yend=filter(r2n_allW.v, cond == "imm")$other),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated","Immediate")) +
scale_fill_manual(values = c("#feb24c", "#91bfdb"), # c("#F17402", "#2C57AA"), c()
labels = c("Self", "Other")) +
# coord_cartesian(ylim = c(-0.5, 0.7), clip = "on") +
labs(x = "Condition", y = "Beta Value") +
ggtitle("Self vs. Other") +
theme_bw(base_size = 18) +
theme(# axis.text.x=element_blank(),
# axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r2n.all.plot1targ_roi = c("p_hpp", "a_hpp","mpfc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r2n.all.plot1 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=type)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"la_hpp" = "l-a HIP",
"lp_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=type), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v, cond == "cons"), inherit.aes = FALSE,
aes(x=0.8, y=filter(r2n_allW.v, cond == "cons")$self,
xend=1.2, yend=filter(r2n_allW.v, cond == "cons")$other),
color="gray90") +
geom_segment(data=filter(r2n_allW.v, cond == "imm"), inherit.aes = FALSE,
aes(x=1.8, y=filter(r2n_allW.v, cond == "imm")$self,
xend=2.2, yend=filter(r2n_allW.v, cond == "imm")$other),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated","Immediate")) +
scale_fill_manual(values = c("#feb24c", "#91bfdb"), # c("#F17402", "#2C57AA"), c()
labels = c("Self", "Other")) +
# coord_cartesian(ylim = c(-0.5, 0.7), clip = "on") +
labs(x = "Condition", y = "Beta Value") +
ggtitle("Self vs. Other") +
theme_bw(base_size = 18) +
theme(# axis.text.x=element_blank(),
# axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r2n.all.plot1combined LOC의 통계 분석 결과는 아래와 같다.
r2n_allL.p1 <- r2n_allL %>% filter(roi =="loc")
r2n.aov1.tmp <- aov_ez(id="subj", dv="beta", data = r2n_allL.p1, within = c("cond", "type"))
# summary(r2n.aov1)
nice(r2n.aov1.tmp, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 8.38 ** | .267 | .008 |
| type | 1, 23 | 0.00 | 10.00 ** | .303 | .004 |
| cond:type | 1, 23 | 0.00 | 10.70 ** | .318 | .003 |
p_h1 <- r2n_allL.p1 %>% group_by(roi, cond) %>%
rstatix::pairwise_t_test(beta ~ type,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.p1 %>% group_by(roi, cond) %>%
rstatix::cohens_d(beta ~ type, paired=T, ci = F) %>%
dplyr::select(roi, cond, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "cond", "group1", "group2")) %>% kable(digits=3)| roi | cond | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | self | other | 0.013 | 0.007 | 0.020 | 23 | 4.371 | 0.000 | *** | 0.892 | large |
| loc | imm | self | other | 0.000 | -0.006 | 0.006 | 23 | -0.107 | 0.915 | ns | -0.022 | negligible |
p_h1 <- r2n_allL.p1 %>% group_by(roi, type) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, type, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.p1 %>% group_by(roi, type) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, type, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "type", "group1", "group2")) %>% kable(digits=3)| roi | type | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | other | cons | imm | 0.010 | 0.000 | 0.021 | 23 | 1.999 | 0.058 | ns | 0.408 | small |
| loc | self | cons | imm | 0.024 | 0.009 | 0.039 | 23 | 3.320 | 0.003 | ** | 0.678 | moderate |
left & right LOC의 결과는 아래와 같다.
targ_roi = c("lloc", "rloc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
r2n.aov1 <- aov_ez(id="subj", dv="beta", data = r2n_allL.tmp, within = c("cond", "roi", "type"))
# summary(r2n.aov1)
nice(r2n.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 6.22 * | .213 | .020 |
| roi | 1, 23 | 0.04 | 2.34 | .092 | .140 |
| type | 1, 23 | 0.00 | 6.68 * | .225 | .017 |
| cond:roi | 1, 23 | 0.00 | 0.04 | .002 | .850 |
| cond:type | 1, 23 | 0.00 | 5.34 * | .188 | .030 |
| roi:type | 1, 23 | 0.00 | 3.31 + | .126 | .082 |
| cond:roi:type | 1, 23 | 0.00 | 0.25 | .011 | .624 |
p_h1 <- r2n_allL.tmp %>% group_by(roi, cond) %>%
rstatix::pairwise_t_test(beta ~ type,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi, cond) %>%
rstatix::cohens_d(beta ~ type, paired=T, ci = F) %>%
dplyr::select(roi, cond, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "cond", "group1", "group2")) %>% kable(digits=3)| roi | cond | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | self | other | 0.007 | 0.000 | 0.015 | 23 | 2.122 | 0.045 | * | 0.433 | small |
| lloc | imm | self | other | -0.001 | -0.010 | 0.007 | 23 | -0.323 | 0.750 | ns | -0.066 | negligible |
| rloc | cons | self | other | 0.014 | 0.005 | 0.022 | 23 | 3.397 | 0.002 | ** | 0.693 | moderate |
| rloc | imm | self | other | 0.001 | -0.005 | 0.008 | 23 | 0.442 | 0.663 | ns | 0.090 | negligible |
p_h1 <- r2n_allL.tmp %>% group_by(roi, type) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, type, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi, type) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, type, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "type", "group1", "group2")) %>% kable(digits=3)| roi | type | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | other | cons | imm | 0.011 | -0.001 | 0.023 | 23 | 1.935 | 0.065 | ns | 0.395 | small |
| lloc | self | cons | imm | 0.020 | 0.003 | 0.036 | 23 | 2.508 | 0.020 | * | 0.512 | moderate |
| rloc | other | cons | imm | 0.008 | -0.003 | 0.020 | 23 | 1.472 | 0.155 | ns | 0.300 | small |
| rloc | self | cons | imm | 0.021 | 0.001 | 0.040 | 23 | 2.138 | 0.043 | * | 0.436 | small |
Posterior-Anterior Hippocampus, mPFC 의 결과는 아래와 같다.
targ_roi = c("p_hpp", "a_hpp", "mpfc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
r2n.aov1 <- aov_ez(id="subj", dv="beta", data = r2n_allL.tmp, within = c("cond", "roi", "type"))
# summary(r2n.aov1)
nice(r2n.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 1.05 | .044 | .316 |
| roi | 1.49, 34.26 | 0.00 | 0.37 | .016 | .632 |
| type | 1, 23 | 0.00 | 0.46 | .019 | .507 |
| cond:roi | 1.60, 36.71 | 0.00 | 1.41 | .058 | .254 |
| cond:type | 1, 23 | 0.00 | 0.33 | .014 | .569 |
| roi:type | 1.53, 35.28 | 0.00 | 1.86 | .075 | .177 |
| cond:roi:type | 1.30, 29.98 | 0.00 | 0.26 | .011 | .677 |
p_h1 <- r2n_allL.tmp %>% group_by(roi, cond) %>%
rstatix::pairwise_t_test(beta ~ type,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi, cond) %>%
rstatix::cohens_d(beta ~ type, paired=T, ci = F) %>%
dplyr::select(roi, cond, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "cond", "group1", "group2")) %>% kable(digits=3)| roi | cond | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | self | other | 0.006 | 0.000 | 0.012 | 23 | 2.012 | 0.056 | ns | 0.411 | small |
| a_hpp | imm | self | other | 0.006 | -0.004 | 0.015 | 23 | 1.270 | 0.217 | ns | 0.259 | small |
| mpfc | cons | self | other | -0.001 | -0.012 | 0.010 | 23 | -0.193 | 0.849 | ns | -0.039 | negligible |
| mpfc | imm | self | other | -0.003 | -0.016 | 0.010 | 23 | -0.533 | 0.599 | ns | -0.109 | negligible |
| p_hpp | cons | self | other | 0.003 | -0.003 | 0.009 | 23 | 0.970 | 0.342 | ns | 0.198 | negligible |
| p_hpp | imm | self | other | -0.003 | -0.011 | 0.005 | 23 | -0.773 | 0.447 | ns | -0.158 | negligible |
p_h1 <- r2n_allL.tmp %>% group_by(roi, type) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, type, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi, type) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, type, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "type", "group1", "group2")) %>% kable(digits=3)| roi | type | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | other | cons | imm | -0.002 | -0.008 | 0.004 | 23 | -0.757 | 0.457 | ns | -0.154 | negligible |
| a_hpp | self | cons | imm | -0.002 | -0.013 | 0.009 | 23 | -0.328 | 0.746 | ns | -0.067 | negligible |
| mpfc | other | cons | imm | -0.009 | -0.020 | 0.001 | 23 | -1.785 | 0.087 | ns | -0.364 | small |
| mpfc | self | cons | imm | -0.007 | -0.026 | 0.012 | 23 | -0.750 | 0.461 | ns | -0.153 | negligible |
| p_hpp | other | cons | imm | -0.001 | -0.004 | 0.001 | 23 | -1.002 | 0.327 | ns | -0.205 | small |
| p_hpp | self | cons | imm | 0.005 | -0.007 | 0.016 | 23 | 0.823 | 0.419 | ns | 0.168 | negligible |
상호 작용을 확인하기 위해 조건 (Consolidated vs. Immediate)과 ROI (6개)를 요인으로 Self-Other Difference를 요약하였다.
# subject-level, long format
r2n_allL <- r2n_l %>% group_by(subj, roi, cond) %>%
dplyr::summarise(beta=mean(b_m_d)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
# r2n_allL %>% kable(digits=2)
# subject-level, wide format
r2n_allW <- r2n_allL %>% spread(key=cond, value = beta)
# r2n_allW %>% kable(digits=3)
# r2n_allW %>% filter(roi=="loc") %>% kable(digits=3)
r2n_allW1 <- r2n_allL %>% spread(key=roi, value=beta)
# r2n_allW1 %>% kable(digits=3)
# summary table: grand mean
r2n_allG <- r2n_allL %>% group_by(roi, cond) %>%
dplyr::summarise(beta.m = mean(beta), beta.sd = sd(beta)) %>%
ungroup()
## `summarise()` has grouped output by 'roi'. You can override using the `.groups` argument.
r2n_allG$beta.se <- Rmisc::summarySEwithin(data = r2n_allL, measurevar = "beta",
idvar = "subj", withinvars = c("roi","cond"))$se
r2n_allG$beta.ci <- Rmisc::summarySEwithin(data = r2n_allL, measurevar = "beta",
idvar = "subj", withinvars = c("roi", "cond"))$ci
r2n_allG <- r2n_allG %>%
mutate(lower.ci = beta.m-beta.ci,
upper.ci = beta.m+beta.ci,
lower.se = beta.m-beta.se,
upper.se = beta.m+beta.se)
targ_roi1 = c("loc", "lloc", "rloc", "p_hpp", "a_hpp","mpfc")
r2n_allG %>% filter(roi %in% targ_roi1) %>% dplyr::select(roi, cond, beta.m) %>%
spread(key=roi, value=beta.m) %>% kable(digits=3)| cond | loc | lloc | rloc | a_hpp | p_hpp | mpfc |
|---|---|---|---|---|---|---|
| cons | 0.013 | 0.007 | 0.014 | 0.006 | 0.003 | -0.001 |
| imm | 0.000 | -0.001 | 0.001 | 0.006 | -0.003 | -0.003 |
targ_roi = c("loc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r4.all.plot3 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=0.5) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v), inherit.aes = FALSE,
aes(x=1, y=filter(r2n_allW.v)$cons,
xend=2, yend=filter(r2n_allW.v)$imm),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(-0.05, 0.05), clip = "on") +
labs(x = "Condition", y = "Difference in Beta Value") +
ggtitle("Synthetic Pattern") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r4.all.plot3targ_roi = c("lloc", "rloc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r4.all.plot3 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=0.5) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v), inherit.aes = FALSE,
aes(x=1, y=filter(r2n_allW.v)$cons,
xend=2, yend=filter(r2n_allW.v)$imm),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(-0.05, 0.05), clip = "on") +
labs(x = "Condition", y = "Difference in Beta Value") +
ggtitle("Synthetic Pattern") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r4.all.plot3targ_roi = c("p_hpp", "a_hpp", "mpfc")
r2n_allL.v <- r2n_allL %>% filter(roi %in% targ_roi)
r2n_allW.v <- r2n_allW %>% filter(roi %in% targ_roi)
r2n_allG.v <- r2n_allG %>% filter(roi %in% targ_roi)
r4.all.plot4 <- ggplot(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=0.5) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"la_hpp" = "l-a HIP",
"lp_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
geom_point(data=r2n_allL.v, aes(x=cond, y=beta, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r2n_allW.v), inherit.aes = FALSE,
aes(x=1, y=filter(r2n_allW.v)$cons,
xend=2, yend=filter(r2n_allW.v)$imm),
color="gray90") +
geom_errorbar(data=r2n_allG.v, aes(x=cond, y= beta.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r1_allG.p1, aes(x = cond, y=z.m, ymin = z.m-z.se, ymax = z.m+z.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
scale_x_discrete(labels=c("Cons","Imm")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(0, 0.6), clip = "on") +
labs(x = "Condition", y = "Difference in Beta Value") +
ggtitle("Synthetic Pattern") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r4.all.plot4combined LOC 의 통계 분석 결과는 아래와 같다.
targ_roi = c("loc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
p_h1 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | imm | 0.014 | 0.005 | 0.022 | 23 | 3.272 | 0.003 | ** | 0.668 | moderate |
left & right LOC 의 통계 분석 결과는 아래와 같다.
targ_roi = c("lloc", "rloc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
r2n.aov1 <- aov_ez(id="subj", dv="beta", data = r2n_allL.tmp, within = c("cond", "roi"))
# summary(r2n.aov1)
nice(r2n.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 5.34 * | .188 | .030 |
| roi | 1, 23 | 0.00 | 3.31 + | .126 | .082 |
| cond:roi | 1, 23 | 0.00 | 0.25 | .011 | .624 |
p_h1 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | imm | 0.009 | -0.002 | 0.020 | 23 | 1.616 | 0.120 | ns | 0.330 | small |
| rloc | cons | imm | 0.012 | 0.000 | 0.025 | 23 | 1.993 | 0.058 | ns | 0.407 | small |
Posterior-Anterior Hippocampus, mPFC의 통계 분석 결과는 아래와 같다.
targ_roi = c("p_hpp", "a_hpp", "mpfc")
r2n_allL.tmp <- r2n_allL %>% filter(roi %in% targ_roi)
r2n.aov1 <- aov_ez(id="subj", dv="beta", data = r2n_allL.tmp, within = c("cond", "roi"))
# summary(r2n.aov1)
nice(r2n.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 0.33 | .014 | .569 |
| roi | 1.53, 35.28 | 0.00 | 1.86 | .075 | .177 |
| cond:roi | 1.30, 29.98 | 0.00 | 0.26 | .011 | .677 |
p_h1 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::pairwise_t_test(beta ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r2n_allL.tmp %>% group_by(roi) %>%
rstatix::cohens_d(beta ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | imm | 0.000 | -0.010 | 0.011 | 23 | 0.083 | 0.935 | ns | 0.017 | negligible |
| mpfc | cons | imm | 0.002 | -0.016 | 0.021 | 23 | 0.263 | 0.795 | ns | 0.054 | negligible |
| p_hpp | cons | imm | 0.006 | -0.006 | 0.018 | 23 | 1.027 | 0.315 | ns | 0.210 | small |
세 번째 가설은 구조화된 표상으로 물체를 이루는 요소들이 뚜렷하게 표상됨에 따라, 요소들과 그 요소들 간의 결합 구조가 파악되어 이를 공유하는 물체들 간의 표상적 유사성이 증가한다는 것이었다. Consolidation이 요소들과 결합 규칙/관계를 공유하는 물체들 간의 표상적 유사성이 증가시키는지를 검증하기 위한 Representation Similarity Analysis 를 수행하였다.
2nd learning phase에서 획득된 각 물체들의 z-scored LOC t-stat 신경 패턴을 Consolidated 조건과 Immediate 조건으로 분할한 후, 각 조건 내에서 서로 간의 Pearson’s correlation coefficient를 계산하였다. 이 coefficient 를 fisher의 z-transformed 한 후, 각 조건 내에서 평균화하였다. 이렇게 획득된 조건별 유사성 점수를 대상으로 조건과 ROI를 요인으로하는 repeated-measures analysis of variance (RM-ANOVA)를 수행하였다. 각 ROI에서 조건에 따른 유사성 점수를 아래에 요약하였다.
r3p1 <- read.csv("data/r3_pttDist_p1_ll.csv", header = T)
r3 <- r3p1
glimpse(r3, width = 70)
## Rows: 3,024
## Columns: 8
## $ subj <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ phase <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ roi <chr> "lloc", "lloc", "lloc", "lloc", "lloc", "lloc", "llo…
## $ cond <int> 1, 1, 2, 2, 1, 2, 3, 1, 1, 2, 2, 1, 2, 3, 1, 1, 2, 2…
## $ ll <dbl> 1, 2, 3, 4, NaN, NaN, NaN, 1, 2, 3, 4, NaN, NaN, NaN…
## $ corrD <dbl> 0.4964106, 0.5430717, 0.4235394, 0.4458869, 0.516844…
## $ eucD <dbl> 16.12489, 15.42859, 17.20601, 16.96776, 15.81151, 17…
## $ cond_ll <int> 1, 2, 1, 2, 3, 3, 3, 1, 2, 1, 2, 3, 3, 3, 1, 2, 1, 2…
# subj : 참가자 번호
# cond : condtiion, consolidation vs. immediate
# roi : 관심 상위 영역. rloc vs. lvwfa
# D : 활성화 정도를 나타내는 D statistics
r3_l <- r3
r3_l$subj = factor(r3_l$subj)
targ_roi<- c("loc", "lloc", "rloc", "pf", "lpf", "rpf",
"lloc31", "rloc31",
"bhpp", "lhpp", "rhpp", "a_hpp", "p_hpp",
"ra_hpp", "rp_hpp", "p_hpp", "a_hpp",
"mpfc")
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc")
r3_l <- r3_l %>% filter(roi %in% targ_roi)
# r3_l <- r3_l %>% filter(subj!=99)
r3_l <- r3_l %>% filter(cond !=3, )
r3_l$ll
## [1] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [19] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [37] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [55] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [73] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [91] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [109] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [127] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [145] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [163] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [181] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [199] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [217] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [235] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [253] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [271] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [289] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [307] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [325] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [343] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [361] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [379] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [397] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [415] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [433] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [451] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [469] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [487] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [505] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [523] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [541] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [559] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [577] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [595] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [613] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [631] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [649] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [667] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [685] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [703] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [721] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [739] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [757] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [775] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [793] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [811] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [829] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
## [847] 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN 1 2 3 4 NaN NaN
r3_l$cond = factor(r3_l$cond, levels=c(1,2),labels=c("cons","imm"))
# r3_l$cond_ll = factor(r3_l$cond_ll, levels=c(1,2,3),labels=c("c1","c2","c12"))
r3_l$cond_ll <- factor(r3_l$cond_ll)
r3_l$roi = factor(r3_l$roi,
levels=c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc"),
labels=c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc"))
r3_l <- r3_l %>% dplyr::select(subj,roi,cond,cond_ll,corrD)
# r3_l$corrD <- 1-r3_l$corrD
length(unique(r3_l$subj))
## [1] 24
# check number of trials for each condition/subj
table(r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
table(r3_l$cond, r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## cons 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
## imm 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
table(r3_l$cond_ll, r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
## 2 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
## 3 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
table(r3_l$roi, r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## loc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## lloc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## rloc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## p_hpp 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## a_hpp 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## mpfc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6# subject-level, long format
r3_allL.1 <- r3_l %>% filter(cond_ll != 3)%>%
group_by(subj, roi, cond) %>%
dplyr::summarise(D=mean(corrD)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
r3_allL.1$cond_ll <- 1
r3_allL.2 <- r3_l %>% filter(cond_ll == 3) %>%
group_by(subj, roi, cond) %>%
dplyr::summarise(D=mean(corrD)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
r3_allL.2$cond_ll <- 2
r3_allL <- rbind(r3_allL.1, r3_allL.2)
r3_allL$cond_ll <- factor(r3_allL$cond_ll, levels =c(1,2), labels = c("wn", "btw"))
r3_allL <- r3_allL %>% filter(cond_ll == "wn")
# subject-level, wide format
r3_allW <- r3_allL %>% spread(key=cond, value = D)
# r3_allW %>% filter(phase==1, roi =="loc") %>% kable(digits=2)
r3_allW1 <- r3_allL %>% spread(key=roi, value=D)
# r3_allW1 %>% kable(digits=2)
r3_allW2 <- r3_allL %>% spread(key=cond, value=D)
# r3_allW2 %>% filter(phase ==1, roi=="loc") %>% kable(digits=2)
# summary table: grand mean
r3_allG <- r3_allL %>% group_by(roi, cond, cond_ll) %>%
dplyr::summarise(D.m = mean(D), D.sd = sd(D)) %>%
ungroup()
## `summarise()` has grouped output by 'roi', 'cond'. You can override using the `.groups` argument.
r3_allG$D.se <- Rmisc::summarySEwithin(data = r3_allL, measurevar = "D",
idvar = "subj", withinvars = c("roi","cond","cond_ll"))$se
r3_allG$D.ci <- Rmisc::summarySEwithin(data = r3_allL, measurevar = "D",
idvar = "subj", withinvars = c("roi", "cond","cond_ll"))$ci
r3_allG <- r3_allG %>%
mutate(lower.ci = D.m-D.ci,
upper.ci = D.m+D.ci,
lower.se = D.m-D.se,
upper.se = D.m+D.se)
targ_roi1 = c("loc", "lloc", "rloc", "p_hpp", "a_hpp", "mpfc")
r3_allG %>% filter(roi %in% targ_roi1) %>% dplyr::select(roi, cond, D.m) %>%
spread(key=roi, value=D.m) %>% kable(digits=2)| cond | loc | lloc | rloc | p_hpp | a_hpp | mpfc |
|---|---|---|---|---|---|---|
| cons | 0.30 | 0.31 | 0.27 | 0.03 | 0.02 | 0.04 |
| imm | 0.28 | 0.29 | 0.26 | 0.03 | 0.03 | 0.04 |
targ_roi = c("loc")
# phase 1
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r3_allW.p1)$cons,
xend=2, yend=filter(r3_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r3_allG.p1, aes(x = cond, y=D.m, ymin = D.m-D.se, ymax = D.m+D.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
# scale_x_discrete(labels=c("within","between")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Similarity (Zr)") +
ggtitle("Objects (Category)") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1targ_roi = c("lloc", "rloc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r3_allW.p1)$cons,
xend=2, yend=filter(r3_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r3_allG.p1, aes(x = cond, y=D.m, ymin = D.m-D.se, ymax = D.m+D.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
# scale_x_discrete(labels=c("within","between")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Similarity (Zr)") +
ggtitle("Objects (Category)") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1targ_roi = c("p_hpp", "a_hpp", "mpfc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond",roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"a_hpp" = "l-a HIP",
"p_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r3_allW.p1)$cons,
xend=2, yend=filter(r3_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r3_allG.p1, aes(x = cond, y=D.m, ymin = D.m-D.se, ymax = D.m+D.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
# scale_x_discrete(labels=c("within","between")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Similarity (Zr)") +
ggtitle("Objects (Category)") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1Combined LOC의 통계 분석 결과는 아래와 같다.
targ_roi<- c("loc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allL.p1$cond <- factor(r3_allL.p1$cond)
p_h1 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | imm | 0.019 | 0.007 | 0.032 | 23 | 3.227 | 0.004 | ** | 0.659 | moderate |
left & right LOC의 통계 분석 결과는 아래와 같다.
targ_roi = c("lloc", "rloc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond","roi"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 7.97 ** | .257 | .010 |
| roi | 1, 23 | 0.01 | 2.80 | .109 | .108 |
| cond:roi | 1, 23 | 0.00 | 0.59 | .025 | .451 |
p_h1 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | imm | 0.014 | 0.001 | 0.028 | 23 | 2.172 | 0.040 | * | 0.443 | small |
| rloc | cons | imm | 0.020 | 0.004 | 0.035 | 23 | 2.660 | 0.014 | * | 0.543 | moderate |
Posterior-Anterior Hippocampus와 mPFC의 결과는 아래와 같다.
targ_roi = c("p_hpp", "a_hpp", "mpfc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond","roi"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 0.02 | <.001 | .884 |
| roi | 1.41, 32.44 | 0.00 | 11.63 *** | .336 | <.001 |
| cond:roi | 1.40, 32.25 | 0.00 | 1.96 | .078 | .168 |
p_h1 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | imm | -0.005 | -0.012 | 0.002 | 23 | -1.595 | 0.124 | ns | -0.326 | small |
| mpfc | cons | imm | 0.002 | -0.009 | 0.013 | 23 | 0.340 | 0.737 | ns | 0.069 | negligible |
| p_hpp | cons | imm | 0.002 | -0.003 | 0.007 | 23 | 0.864 | 0.397 | ns | 0.176 | negligible |
각 조건에서 나타나는 표상적 유사성의 정도가 Consolidation에 의한 전반적인 차이가 아닌, 요소와 결합 규칙의 공유에 의한 것인지를 확인하기 위한 보조적 분석을 수행하였다. 각 조건을 구성하는 두 범주 각각에서 동일 범주 내의 물체들의 평균 유사성 점수를 동일한 절차로 획득하였고 이를 Within 조건으로 명명하였다. 그리고 두 범주 간에서 물체들 간의 유사성 점수를 유사한 절차로 획득하고 이를 Between 조건으로 명명하였다. 이를 통해 조건 (Consolidated vs. Immediate), ROI (6개), Type (Within vs. Between)의 세 가지 변인이 구성되었다.
조건 (Consolidated vs. Immediate), ROI (6개), Type (Within vs. Between)을 요인으로 유사성 점수를 요약하였다.
# subject-level, long format
r3_allL.1 <- r3_l %>% filter(cond_ll != 3)%>%
group_by(subj, roi, cond) %>%
dplyr::summarise(D=mean(corrD)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
r3_allL.1$cond_ll <- 1
r3_allL.2 <- r3_l %>% filter(cond_ll == 3) %>%
group_by(subj, roi, cond) %>%
dplyr::summarise(D=mean(corrD)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
r3_allL.2$cond_ll <- 2
r3_allL <- rbind(r3_allL.1, r3_allL.2)
r3_allL$cond_ll <- factor(r3_allL$cond_ll, levels =c(1,2), labels = c("wn", "btw"))
# r3_allL %>% kable(digits=2)
# subject-level, wide format
r3_allW <- r3_allL %>% spread(key=cond_ll, value=D)
# summary table: grand mean
r3_allG <- r3_allL %>% group_by(roi, cond, cond_ll) %>%
dplyr::summarise(D.m = mean(D), D.sd = sd(D)) %>%
ungroup()
## `summarise()` has grouped output by 'roi', 'cond'. You can override using the `.groups` argument.
r3_allG$D.se <- Rmisc::summarySEwithin(data = r3_allL, measurevar = "D",
idvar = "subj", withinvars = c("roi","cond","cond_ll"))$se
r3_allG$D.ci <- Rmisc::summarySEwithin(data = r3_allL, measurevar = "D",
idvar = "subj", withinvars = c("roi", "cond","cond_ll"))$ci
r3_allG <- r3_allG %>%
mutate(lower.ci = D.m-D.ci,
upper.ci = D.m+D.ci,
lower.se = D.m-D.se,
upper.se = D.m+D.se)
targ_roi1 = c("loc", "lloc", "rloc", "p_hpp", "a_hpp", "mpfc")
r3_allG %>% filter(roi %in% targ_roi1) %>% dplyr::select(roi, cond, cond_ll, D.m) %>%
spread(key=roi, value=D.m) %>% kable(digits=2)| cond | cond_ll | loc | lloc | rloc | p_hpp | a_hpp | mpfc |
|---|---|---|---|---|---|---|---|
| cons | wn | 0.30 | 0.31 | 0.27 | 0.03 | 0.02 | 0.04 |
| cons | btw | 0.29 | 0.30 | 0.27 | 0.03 | 0.02 | 0.04 |
| imm | wn | 0.28 | 0.29 | 0.26 | 0.03 | 0.03 | 0.04 |
| imm | btw | 0.28 | 0.29 | 0.25 | 0.03 | 0.03 | 0.04 |
targ_roi = c("loc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond_ll)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond_ll), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1, cond =="cons"), inherit.aes = FALSE,
aes(x=0.8, y=filter(r3_allW.p1, cond =="cons")$wn,
xend=1.2, yend=filter(r3_allW.p1, cond =="cons")$btw),
color="gray90") +
geom_segment(data=filter(r3_allW.p1, cond =="imm"), inherit.aes = FALSE,
aes(x=1.8, y=filter(r3_allW.p1, cond =="imm")$wn,
xend=2.2, yend=filter(r3_allW.p1, cond =="imm")$btw),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated","Immediate")) +
scale_fill_manual(values = c("#feb24c", "#91bfdb"),
labels = c("Within", "Between")) +
coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Similarity (Zr)") +
ggtitle("Objects (Category)") +
theme_bw(base_size = 18) +
theme(#axis.text.x=element_blank(),
#axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1targ_roi = c("lloc", "rloc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond_ll)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond_ll), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1, cond =="cons"), inherit.aes = FALSE,
aes(x=0.8, y=filter(r3_allW.p1, cond =="cons")$wn,
xend=1.2, yend=filter(r3_allW.p1, cond =="cons")$btw),
color="gray90") +
geom_segment(data=filter(r3_allW.p1, cond =="imm"), inherit.aes = FALSE,
aes(x=1.8, y=filter(r3_allW.p1, cond =="imm")$wn,
xend=2.2, yend=filter(r3_allW.p1, cond =="imm")$btw),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated","Immediate")) +
scale_fill_manual(values = c("#feb24c", "#91bfdb"),
labels = c("Within", "Between")) +
coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Similarity (Zr)") +
ggtitle("Objects (Category)") +
theme_bw(base_size = 18) +
theme(#axis.text.x=element_blank(),
#axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1targ_roi = c("p_hpp", "a_hpp", "mpfc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot2 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond_ll)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
# geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"a_hpp" = "l-a HIP",
"p_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond_ll), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1, cond =="cons"), inherit.aes = FALSE,
aes(x=0.8, y=filter(r3_allW.p1, cond =="cons")$wn,
xend=1.2, yend=filter(r3_allW.p1, cond =="cons")$btw),
color="gray90") +
geom_segment(data=filter(r3_allW.p1, cond =="imm"), inherit.aes = FALSE,
aes(x=1.8, y=filter(r3_allW.p1, cond =="imm")$wn,
xend=2.2, yend=filter(r3_allW.p1, cond =="imm")$btw),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
scale_x_discrete(labels=c("Consolidated","Immediate")) +
scale_fill_manual(values = c("#feb24c", "#91bfdb"),
labels = c("Within", "Between")) +
# coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Similarity (Zr)") +
ggtitle("Objects (Category)") +
theme_bw(base_size = 18) +
theme(#axis.text.x=element_blank(),
#axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot2Combined LOC의 통계 분석 결과는 아래와 같다.
targ_roi = c("loc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond","cond_ll"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 8.74 ** | .275 | .007 |
| cond_ll | 1, 23 | 0.00 | 3.91 + | .145 | .060 |
| cond:cond_ll | 1, 23 | 0.00 | 3.98 + | .148 | .058 |
p_h1 <- r3_allL.p1 %>% group_by(roi, cond) %>%
rstatix::pairwise_t_test(D ~ cond_ll,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi, cond) %>%
rstatix::cohens_d(D ~ cond_ll, paired=T, ci = F) %>%
dplyr::select(roi, cond, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","cond", "group1", "group2")) %>% kable(digits=3)| roi | cond | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | wn | btw | 0.004 | 0.000 | 0.009 | 23 | 2.172 | 0.040 | * | 0.443 | small |
| loc | imm | wn | btw | 0.000 | -0.002 | 0.002 | 23 | 0.202 | 0.842 | ns | 0.041 | negligible |
p_h1 <- r3_allL.p1 %>% group_by(roi, cond_ll) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond_ll, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi, cond_ll) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, cond_ll, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","cond_ll", "group1", "group2")) %>% kable(digits=3)| roi | cond_ll | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | btw | cons | imm | 0.015 | 0.003 | 0.027 | 23 | 2.580 | 0.017 | * | 0.527 | moderate |
| loc | wn | cons | imm | 0.019 | 0.007 | 0.032 | 23 | 3.227 | 0.004 | ** | 0.659 | moderate |
left & right LOC의 통계 분석 결과는 아래와 같다.
targ_roi = c("lloc", "rloc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond","cond_ll", "roi"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 6.58 * | .222 | .017 |
| cond_ll | 1, 23 | 0.00 | 3.67 + | .138 | .068 |
| roi | 1, 23 | 0.02 | 2.89 | .112 | .103 |
| cond:cond_ll | 1, 23 | 0.00 | 2.76 | .107 | .110 |
| cond:roi | 1, 23 | 0.00 | 0.38 | .016 | .543 |
| cond_ll:roi | 1, 23 | 0.00 | 0.17 | .007 | .686 |
| cond:cond_ll:roi | 1, 23 | 0.00 | 0.88 | .037 | .358 |
p_h1 <- r3_allL.p1 %>% group_by(roi, cond) %>%
rstatix::pairwise_t_test(D ~ cond_ll,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi, cond) %>%
rstatix::cohens_d(D ~ cond_ll, paired=T, ci = F) %>%
dplyr::select(roi, cond, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","cond", "group1", "group2")) %>% kable(digits=3)| roi | cond | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | wn | btw | 0.003 | -0.002 | 0.008 | 23 | 1.303 | 0.206 | ns | 0.266 | small |
| lloc | imm | wn | btw | 0.001 | -0.001 | 0.002 | 23 | 0.551 | 0.587 | ns | 0.112 | negligible |
| rloc | cons | wn | btw | 0.005 | 0.000 | 0.009 | 23 | 1.979 | 0.060 | ns | 0.404 | small |
| rloc | imm | wn | btw | 0.000 | -0.002 | 0.003 | 23 | 0.149 | 0.883 | ns | 0.030 | negligible |
p_h1 <- r3_allL.p1 %>% group_by(roi, cond_ll) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond_ll, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi, cond_ll) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, cond_ll, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","cond_ll", "group1", "group2")) %>% kable(digits=3)| roi | cond_ll | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | btw | cons | imm | 0.012 | -0.002 | 0.026 | 23 | 1.768 | 0.090 | ns | 0.361 | small |
| lloc | wn | cons | imm | 0.014 | 0.001 | 0.028 | 23 | 2.172 | 0.040 | * | 0.443 | small |
| rloc | btw | cons | imm | 0.015 | 0.000 | 0.031 | 23 | 2.026 | 0.054 | ns | 0.414 | small |
| rloc | wn | cons | imm | 0.020 | 0.004 | 0.035 | 23 | 2.660 | 0.014 | * | 0.543 | moderate |
Posterior-Anterior Hippocampus와 mPFC의 결과는 아래와 같다.
targ_roi = c("p_hpp", "a_hpp","mpfc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond", "cond_ll", "roi"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 0.01 | <.001 | .914 |
| cond_ll | 1, 23 | 0.00 | 0.60 | .025 | .447 |
| roi | 1.37, 31.55 | 0.00 | 11.04 *** | .324 | <.001 |
| cond:cond_ll | 1, 23 | 0.00 | 0.03 | .001 | .867 |
| cond:roi | 1.36, 31.30 | 0.00 | 1.49 | .061 | .239 |
| cond_ll:roi | 1.87, 43.04 | 0.00 | 1.43 | .059 | .249 |
| cond:cond_ll:roi | 1.50, 34.48 | 0.00 | 1.35 | .055 | .267 |
p_h1 <- r3_allL.p1 %>% group_by(roi, cond) %>%
rstatix::pairwise_t_test(D ~ cond_ll,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi, cond) %>%
rstatix::cohens_d(D ~ cond_ll, paired=T, ci = F) %>%
dplyr::select(roi, cond, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","cond", "group1", "group2")) %>% kable(digits=3)| roi | cond | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | wn | btw | -0.001 | -0.004 | 0.001 | 23 | -1.055 | 0.302 | ns | -0.215 | small |
| a_hpp | imm | wn | btw | 0.001 | -0.001 | 0.004 | 23 | 0.897 | 0.379 | ns | 0.183 | negligible |
| mpfc | cons | wn | btw | 0.000 | -0.005 | 0.005 | 23 | 0.029 | 0.977 | ns | 0.006 | negligible |
| mpfc | imm | wn | btw | 0.000 | -0.004 | 0.005 | 23 | 0.188 | 0.853 | ns | 0.038 | negligible |
| p_hpp | cons | wn | btw | 0.003 | 0.000 | 0.006 | 23 | 1.893 | 0.071 | ns | 0.386 | small |
| p_hpp | imm | wn | btw | 0.001 | -0.001 | 0.003 | 23 | 1.017 | 0.320 | ns | 0.208 | small |
p_h1 <- r3_allL.p1 %>% group_by(roi, cond_ll) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, cond_ll, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi, cond_ll) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, cond_ll, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","cond_ll", "group1", "group2")) %>% kable(digits=3)| roi | cond_ll | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | btw | cons | imm | -0.003 | -0.009 | 0.003 | 23 | -0.950 | 0.352 | ns | -0.194 | negligible |
| a_hpp | wn | cons | imm | -0.005 | -0.012 | 0.002 | 23 | -1.595 | 0.124 | ns | -0.326 | small |
| mpfc | btw | cons | imm | 0.002 | -0.008 | 0.012 | 23 | 0.443 | 0.662 | ns | 0.090 | negligible |
| mpfc | wn | cons | imm | 0.002 | -0.009 | 0.013 | 23 | 0.340 | 0.737 | ns | 0.069 | negligible |
| p_hpp | btw | cons | imm | 0.000 | -0.004 | 0.005 | 23 | 0.090 | 0.929 | ns | 0.018 | negligible |
| p_hpp | wn | cons | imm | 0.002 | -0.003 | 0.007 | 23 | 0.864 | 0.397 | ns | 0.176 | negligible |
상호 작용을 확인하기 위해 조건 (Consolidated vs. Immediate)과 ROI (6개)를 요인으로 Within-Between Difference를 요약하였다.
r3p1 <- read.csv("data/r3_pttDist_p1_ll.csv", header = T)
r3 <- r3p1
glimpse(r3, width = 70)
## Rows: 3,024
## Columns: 8
## $ subj <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ phase <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ roi <chr> "lloc", "lloc", "lloc", "lloc", "lloc", "lloc", "llo…
## $ cond <int> 1, 1, 2, 2, 1, 2, 3, 1, 1, 2, 2, 1, 2, 3, 1, 1, 2, 2…
## $ ll <dbl> 1, 2, 3, 4, NaN, NaN, NaN, 1, 2, 3, 4, NaN, NaN, NaN…
## $ corrD <dbl> 0.4964106, 0.5430717, 0.4235394, 0.4458869, 0.516844…
## $ eucD <dbl> 16.12489, 15.42859, 17.20601, 16.96776, 15.81151, 17…
## $ cond_ll <int> 1, 2, 1, 2, 3, 3, 3, 1, 2, 1, 2, 3, 3, 3, 1, 2, 1, 2…
# subj : 참가자 번호
# cond : condtiion, consolidation vs. immediate
# roi : 관심 상위 영역. rloc vs. lvwfa
# D : 활성화 정도를 나타내는 D statistics
# phase : phase 1 & 2
r3_l <- r3
r3_l$subj = factor(r3_l$subj)
targ_roi<- c("loc", "lloc", "rloc", "pf", "lpf", "rpf",
"lloc31", "rloc31",
"bhpp", "lhpp", "rhpp", "a_hpp", "p_hpp",
"ra_hpp", "rp_hpp", "p_hpp", "a_hpp",
"mpfc")
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc")
r3_l <- r3_l %>% filter(roi %in% targ_roi)
r3_l <- r3_l %>% filter(cond !=3)
r3_l$cond = factor(r3_l$cond, levels=c(1,2),labels=c("cons","imm"))
r3_l$roi = factor(r3_l$roi,
levels=c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc"),
labels=c("loc", "lloc", "rloc",
"p_hpp", "a_hpp", "mpfc"))
r3_l <- r3_l %>% dplyr::select(subj,roi,cond,cond_ll,corrD)
length(unique(r3_l$subj))
## [1] 24
# check number of trials for each condition/subj
table(r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
table(r3_l$cond, r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## cons 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
## imm 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
table(r3_l$cond_ll, r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
## 2 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
## 3 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
table(r3_l$roi, r3_l$subj)
##
## 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 94 96 97 98 99
## loc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## lloc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## rloc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## p_hpp 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## a_hpp 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## mpfc 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6# subject-level, long format
r3_allL.1 <- r3_l %>% filter(cond_ll != 3)%>%
group_by(subj, roi, cond) %>%
dplyr::summarise(D=mean(corrD)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
r3_allL.1$cond_ll <- 1
r3_allL.2 <- r3_l %>% filter(cond_ll == 3) %>%
group_by(subj,roi, cond) %>%
dplyr::summarise(D=mean(corrD)) %>%
ungroup()
## `summarise()` has grouped output by 'subj', 'roi'. You can override using the `.groups` argument.
r3_allL.2$cond_ll <- 2
r3_allL <- rbind(r3_allL.1, r3_allL.2)
r3_allL$cond_ll <- factor(r3_allL$cond_ll, levels =c(1,2), labels = c("wn", "btw"))
r3_allL <- r3_allL %>% spread(key = cond_ll, value = D) %>%
mutate(D = wn - btw) %>% dplyr::select(subj, roi, cond, D)
# subject-level, wide format
r3_allW <- r3_allL %>% spread(key=cond, value = D)
# summary table: grand mean
r3_allG <- r3_allL %>% group_by(roi, cond) %>%
dplyr::summarise(D.m = mean(D), D.sd = sd(D)) %>%
ungroup()
## `summarise()` has grouped output by 'roi'. You can override using the `.groups` argument.
r3_allG$D.se <- Rmisc::summarySEwithin(data = r3_allL, measurevar = "D",
idvar = "subj", withinvars = c("roi","cond"))$se
r3_allG$D.ci <- Rmisc::summarySEwithin(data = r3_allL, measurevar = "D",
idvar = "subj", withinvars = c("roi", "cond"))$ci
r3_allG <- r3_allG %>%
mutate(lower.ci = D.m-D.ci,
upper.ci = D.m+D.ci,
lower.se = D.m-D.se,
upper.se = D.m+D.se)
targ_roi1 = c("loc", "lloc", "rloc", "p_hpp", "a_hpp", "mpfc")
r3_allG %>% filter(roi %in% targ_roi1) %>% dplyr::select(roi, cond, D.m) %>%
spread(key=roi, value=D.m) %>% kable(digits=3)| cond | loc | lloc | rloc | p_hpp | a_hpp | mpfc |
|---|---|---|---|---|---|---|
| cons | 0.004 | 0.003 | 0.005 | 0.003 | -0.001 | 0 |
| imm | 0.000 | 0.001 | 0.000 | 0.001 | 0.001 | 0 |
targ_roi = c("loc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r3_allW.p1)$cons,
xend=2, yend=filter(r3_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r3_allG.p1, aes(x = cond, y=D.m, ymin = D.m-D.se, ymax = D.m+D.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
# scale_x_discrete(labels=c("within","between")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Difference in Similarity (Zr)") +
ggtitle("Objects") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1targ_roi = c("lloc","rloc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("loc" = "LOC",
"lloc" = "left LOC",
"rloc" = "right LOC",
"pf" = "pF",
"lpf" = "left pF",
"rpf" = "right pF",
"lloc31" = "left LOC31",
"rloc31" = "right LOC31"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r3_allW.p1)$cons,
xend=2, yend=filter(r3_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# geom_pointrange(data=r3_allG.p1, aes(x = cond, y=D.m, ymin = D.m-D.se, ymax = D.m+D.se),
# position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
# scale_x_discrete(labels=c("within","between")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Difference in Similarity (Zr)") +
ggtitle("Objects") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1targ_roi = c("p_hpp", "a_hpp", "mpfc")
r3_allL.p1 <- r3_allL %>% filter(cond != "intCond", roi %in% targ_roi)
r3_allW.p1 <- r3_allW %>% filter(roi %in% targ_roi)
r3_allG.p1 <- r3_allG %>% filter(cond != "intCond", roi %in% targ_roi)
r3.p1.all.plot1 <- ggplot(data=r3_allL.p1, aes(x=cond, y=D, fill=cond)) +
stat_summary(fun = mean, geom = "bar", position="dodge",
na.rm = TRUE, alpha = .9, width = 0.8, size = 0.3, color='black') +
geom_hline(yintercept=0, linetype='solid', color='black', alpha =1, size=1) +
facet_grid(.~roi, scales="free_x", space = "free",
labeller = labeller(roi = c("bhpp" = "HIP",
"lhpp" = "left\nHIP",
"rhpp" = "right\nHIP",
"a_hpp" = "anterior\nHIP",
"p_hpp" = "posterior\nHIP",
"a_hpp" = "l-a HIP",
"p_hpp" = "l-p HIP",
"ra_hpp" = "r-a HIP",
"rp_hpp" = "r-p HIP",
"mpfc" = "mPFC"))) +
geom_point(data=r3_allL.p1, aes(x=cond, y=D, fill=cond), position = position_dodge(width=0.8),
size=2, show.legend=F, color="gray90") +
geom_segment(data=filter(r3_allW.p1), inherit.aes = FALSE,
aes(x=1, y=filter(r3_allW.p1)$cons,
xend=2, yend=filter(r3_allW.p1)$imm),
color="gray90") +
geom_errorbar(data=r3_allG.p1, aes(x=cond, y= D.m, ymin=lower.se, ymax=upper.se), width=.2,
position=position_dodge(.8), color = "black") +
# scale_x_discrete(labels=c("within","between")) +
scale_fill_manual(values = c("#F17402", "#2C57AA"), # c("#F17402", "#2C57AA"), c("#feb24c", "#91bfdb")
labels = c("Consolidated", "Immediate")) +
# coord_cartesian(ylim = c(0, 0.8), clip = "on") +
labs(x = "Condition", y = "Difference in Similarity (Zr)") +
ggtitle("Objects") +
theme_bw(base_size = 18) +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
plot.margin = margin(1, 0.3, 1, 0.3, "cm"),
legend.title = element_blank(),
legend.position="bottom")
r3.p1.all.plot1Combined LOC의 통계 분석 결과는 아래와 같다.
targ_roi = c("loc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
p_h1 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>%group_by(roi) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi","group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| loc | cons | imm | 0.004 | 0 | 0.009 | 23 | 1.996 | 0.058 | ns | 0.407 | small |
left & right LOC의 통계 분석 결과는 아래와 같다.
targ_roi = c("lloc", "rloc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond","roi"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 2.76 | .107 | .110 |
| roi | 1, 23 | 0.00 | 0.17 | .007 | .686 |
| cond:roi | 1, 23 | 0.00 | 0.88 | .037 | .358 |
p_h1 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lloc | cons | imm | 0.002 | -0.002 | 0.007 | 23 | 1.110 | 0.279 | ns | 0.226 | small |
| rloc | cons | imm | 0.004 | -0.001 | 0.010 | 23 | 1.795 | 0.086 | ns | 0.366 | small |
Posterior-Anterior Hippocampus와 mPFC의 결과는 아래와 같다.
targ_roi = c("p_hpp", "a_hpp","mpfc")
r3_allL.p1 <- r3_allL %>% filter(roi %in% targ_roi,
cond != "intCond")
r3.aov1 <- aov_ez(id="subj", dv="D", data = r3_allL.p1, within = c("cond", "roi"))
# summary(r3.aov1)
nice(r3.aov1, es="pes") %>% kable(digits=2)| Effect | df | MSE | F | pes | p.value |
|---|---|---|---|---|---|
| cond | 1, 23 | 0.00 | 0.03 | .001 | .867 |
| roi | 1.87, 43.04 | 0.00 | 1.43 | .059 | .249 |
| cond:roi | 1.50, 34.48 | 0.00 | 1.35 | .055 | .267 |
p_h1 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::pairwise_t_test(D ~ cond,
p.adjust.method="bonferroni",
paired=T, detailed=T) %>%
dplyr::select(roi, group1, group2, estimate, conf.low, conf.high, df, statistic, p.adj, p.adj.signif)
p_h2 <- r3_allL.p1 %>% group_by(roi) %>%
rstatix::cohens_d(D ~ cond, paired=T, ci = F) %>%
dplyr::select(roi, group1, group2, effsize, magnitude)
merge(p_h1, p_h2, by=c("roi", "group1", "group2")) %>% kable(digits=3)| roi | group1 | group2 | estimate | conf.low | conf.high | df | statistic | p.adj | p.adj.signif | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|
| a_hpp | cons | imm | -0.002 | -0.006 | 0.001 | 23 | -1.499 | 0.148 | ns | -0.306 | small |
| mpfc | cons | imm | 0.000 | -0.007 | 0.006 | 23 | -0.108 | 0.915 | ns | -0.022 | negligible |
| p_hpp | cons | imm | 0.002 | -0.002 | 0.005 | 23 | 1.144 | 0.265 | ns | 0.233 | small |
Results 1-3에서 Consolidation이 새로운 물체의 구조화된 표상을 촉진항 나타날 수 있는 세 가지 결과를 확인하였다. Immediate 조건 범주에 비해 Consolidated 조건 범주의 새로운 물체는 더 높은 LOC 활성화를 보였고, 물체의 신경 패턴이 구성 요소의 신경 패턴으로 설명되는 정도가 더 크게 나타났다. 또 구성 요소와 결합 관계를 공유하는 이러한 물체 범주들은 Consolidated 조건에서 Immediate 조건보다 더 높은 표상적 유사성을 보였다. 이 결과가 실제로 구조화된 표상으로 인한 것이고 이러한 효과가 Consolidation에 의해 촉진된 것이라면 세 가지 분석의 측정치 사이에 정적 관계를 기대할 수 있다. 이를 검증하기 위해 세 가지 결과 사이의 상관 관계를 분석하였다. 각 참가자의 3가지 측정치에서 Consolidated 조건과 Immediate 조건의 차이 점수를 구성한 후, 참가자 수준에서 Pearson 상관관계로 세 측정치 간의 관계를 검정하였다
## activation
r1p1 <- read.csv("data/r1_p1_sum.csv", header = T)
r1_l <- r1p1
r1_l$subj = factor(r1_l$subj)
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp",
"mpfc")
r1_l <- r1_l %>% filter(roi %in% targ_roi)
# r1_l <- r1_l %>% filter(subj!=99)
r1_l$cond = factor(r1_l$cond, levels=c("cons","imm"),labels=c("cons","imm"))
r1_l$roi = factor(r1_l$roi,
levels=c("loc","lloc","rloc",
"pf", "lpf", "rpf", "lloc31","rloc31",
"bhpp","lhpp","rhpp",
"a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"),
labels=c("loc","lloc","rloc","pf", "lpf", "rpf",
"lloc31","rloc31",
"bhpp","lhpp","rhpp",
"a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"))
r1_l <- r1_l %>% dplyr::select(subj,roi,cond,z)
## Constituent Explainability
r2n <- read.csv("data/r2_glmfit_sum.csv", header = T)
glimpse(r2n, width = 70)
## Rows: 864
## Columns: 9
## $ subj <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ roi <chr> "lloc", "rloc", "lloc31", "rloc31", "lhpp", …
## $ cond <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ beta_sum <dbl> 0.2028386000, 0.1389327000, 0.2517406000, 0.…
## $ beta_mean <dbl> 0.4704866000, 0.3063211000, 0.5331985000, 0.…
## $ beta_sum_other <dbl> 0.190867500, 0.115867800, 0.238368500, 0.241…
## $ beta_sum_diff <dbl> 0.0119710500, 0.0230649400, 0.0133721300, 0.…
## $ beta_mean_other <dbl> 0.44092610000, 0.26031930000, 0.52268880000,…
## $ beta_mean_diff <dbl> 0.029560530, 0.046001820, 0.010509750, 0.017…
r2n_l <- r2n
r2n_l$subj = factor(r2n_l$subj)
r2n_l$cond = factor(r2n_l$cond, levels=c(1,2),labels=c("cons","imm"))
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp",
"mpfc")
r2n_l <- r2n_l %>% filter(roi %in% targ_roi)
r2n_l$roi = factor(r2n_l$roi,
levels=c("loc","lloc","rloc","pf", "lpf", "rpf",
"lloc31","rloc31",
"bhpp","lhpp","rhpp", "a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"),
labels=c("loc","lloc","rloc","pf", "lpf", "rpf", "lloc31","rloc31",
"bhpp","lhpp","rhpp", "a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"))
r2n_l$b_s <- r2n_l$beta_sum # sum of two ptt
r2n_l$b_m <- r2n_l$beta_mean # mean of two ptt
r2n_l <- r2n_l %>% dplyr::select(subj,roi,cond, b_m, b_s)
## Representational Similarity
r3p1 <- read.csv("data/r3_pttDist_p1_cond.csv", header = T)
r3_l <- r3p1
r3_l$subj = factor(r3_l$subj)
targ_roi<- c("loc", "lloc", "rloc",
"p_hpp", "a_hpp",
"mpfc")
r3_l <- r3_l %>% filter(roi %in% targ_roi)
r3_l$cond = factor(r3_l$cond, levels=c(1,2,3),labels=c("cons","imm","intCond"))
r3_l$roi = factor(r3_l$roi,
levels=c("loc","lloc","rloc","pf", "lpf", "rpf",
"lloc31","rloc31",
"bhpp","lhpp","rhpp", "a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"),
labels=c("loc","lloc","rloc","pf", "lpf", "rpf",
"lloc31","rloc31",
"bhpp","lhpp","rhpp", "a_hpp", "p_hpp","la_hpp", "lp_hpp",
"ra_hpp", "rp_hpp", "mpfc"))
r3_l <- r3_l %>% filter(cond != "intCond") %>% dplyr::select(subj,roi,cond,corrD)
r1_l_1 <- r1_l
r3_l_1 <- r3_l
r12.a <- merge(r1_l_1, r2n_l, by=c("subj", "cond", "roi"))
r12.a <- merge(r12.a, r3_l_1, by=c("subj", "cond", "roi"))
r12.a <- r12.a %>% dplyr::select(subj, roi, cond, z, b_m, b_s, corrD)
r12.c <- r12.a %>% filter(cond == "cons")
r12.i <- r12.a %>% filter(cond == "imm")
r12.ss <- merge(r12.c, r12.i, by=c("subj", "roi"))
r12.ss <- r12.ss %>%
mutate(z = (z.x-z.y),
b_m = (b_m.x-b_m.y),
b_s = (b_s.x-b_s.y),
corrD = (corrD.x-corrD.y),
z_a = (z.x+z.y)/2,
b_m_a = (b_m.x+b_m.y)/2,
b_s_a =(b_s.x+b_s.y)/2,
corrD_a = (corrD.x+corrD.y)/2) %>%
dplyr::select(subj, roi, z, b_m, b_s, corrD, z_a, b_m_a, b_s_a, corrD_a)
ROI = c("loc","lloc","rloc", "a_hpp", "p_hpp", "mpfc")for (rois in ROI){
r123s_data <- r12.ss %>% filter(roi == rois)
r123s_data <- r123s_data %>% mutate(z.z = (z - mean(z))/sd(z),
z.b_m = (b_m - mean(b_m))/sd(b_m),
z.corrD = (corrD - mean(corrD))/sd(corrD))
# r123s_data <- r123s_data %>% mutate(z.z = z,
# z.b_m = b_m,
# z.corrD = corrD)
cor.z_bm <- cor.test(formula = ~ z + b_m, data = r123s_data,
method = "pearson", alternative = "two.sided")
r.z_bm <- cor.z_bm[["estimate"]][["cor"]]
r_p.z_bm <- cor.z_bm[["p.value"]]
cor.z_corrD <- cor.test(formula = ~ z + corrD, data = r123s_data,
method = "pearson", alternative = "two.sided")
r.z_corrD <- cor.z_corrD[["estimate"]][["cor"]]
r_p.z_corrD <- cor.z_corrD[["p.value"]]
cor.b_m_corrD <- cor.test(formula = ~ b_m + corrD, data = r123s_data,
method = "pearson", alternative = "two.sided")
r.bm_corrD <- cor.b_m_corrD[["estimate"]][["cor"]]
r_p.bm_corrD <- cor.b_m_corrD[["p.value"]]
pcor.z_b_m <- pcor.test(r123s_data$z, r123s_data$b_m, r123s_data$corrD, method = c("pearson"))
pr.z_bm <- pcor.z_b_m$estimate
pr_p.z_bm <- pcor.z_b_m$p.value
pcor.z_corrD <- pcor.test(r123s_data$z, r123s_data$corrD, r123s_data$b_m, method = c("pearson"))
pr.z_corrD <- pcor.z_corrD$estimate
pr_p.z_corrD <- pcor.z_corrD$p.value
pcor.bm_corrD <- pcor.test(r123s_data$corrD, r123s_data$b_m, r123s_data$z, method = c("pearson"))
pr.bm_corrD <- pcor.bm_corrD$estimate
pr_p.bm_corrD <- pcor.bm_corrD$p.value
assign(sprintf("%s_z_bm_all", rois),
ggplot(r123s_data, aes(x=z.z, y=z.b_m)) +
geom_point(size = 4) +
geom_smooth(method=lm) +
labs(x = sprintf("%s, Activation", rois),
y = sprintf("%s, Beta", rois))+
# ggtitle(sprintf("ppa-%s bgFC - RG difference (sa-diff)", vrois)) +
coord_cartesian(xlim = c(-3,3), ylim = c(-3,4)) +
# coord_cartesian(xlim = c(-3,3), ylim = c(-3,3)) +
theme_bw(base_size = 15) +
theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
legend.position = c(0.65, 0.85),
legend.title = element_blank(),
aspect.ratio = 1,
legend.background = element_blank(),
plot.margin = margin(1, 0.5, 0.5, 0.7, "cm"),
legend.key = element_blank()) +
annotate("text", x=-0.3, y=3,
label=sprintf("r = %0.2f, r_p = %0.3f\npr = %0.2f, pr_p = %0.3f",
r.z_bm, r_p.z_bm, pr.z_bm, pr_p.z_bm),
fontface="italic", colour="black", size=5))
assign(sprintf("%s_z_corrD_all", rois),
ggplot(r123s_data, aes(x=z.z, y=z.corrD)) +
geom_point(size = 4) +
geom_smooth(method=lm) +
labs(x = sprintf("%s, Activation", rois),
y = sprintf("%s, Similarity", rois))+
# ggtitle(sprintf("ppa-%s bgFC - RG difference (sa-diff)", vrois)) +
coord_cartesian(xlim = c(-3,3), ylim = c(-3,4)) +
# coord_cartesian(xlim = c(-3,3), ylim = c(-3,3)) +
theme_bw(base_size = 15) +
theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
legend.position = c(0.65, 0.85),
legend.title = element_blank(),
aspect.ratio = 1,
legend.background = element_blank(),
plot.margin = margin(1, 0.5, 0.5, 0.7, "cm"),
legend.key = element_blank()) +
annotate("text", x=-0.3, y=3,
label=sprintf("r = %0.2f, r_p = %0.3f\npr = %0.2f, pr_p = %0.3f",
r.z_corrD, r_p.z_corrD, pr.z_corrD, pr_p.z_corrD),
fontface="italic", colour="black", size=5))
assign(sprintf("%s_bm_corrD_all", rois),
ggplot(r123s_data, aes(x=z.b_m, y=z.corrD)) +
geom_point(size = 4) +
geom_smooth(method=lm) +
labs(x = sprintf("%s, Beta", rois),
y = sprintf("%s, Similarity", rois))+
# ggtitle(sprintf("ppa-%s bgFC - RG difference (sa-diff)", vrois)) +
coord_cartesian(xlim = c(-3,3), ylim = c(-3,4)) +
# coord_cartesian(xlim = c(-3,3), ylim = c(-3,3)) +
theme_bw(base_size = 15) +
theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
axis.line=element_line(),
strip.text.x = element_text(face = "plain", size = 15, color = "black"),
strip.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.spacing=unit(1, "lines"),
legend.position = c(0.65, 0.85),
legend.title = element_blank(),
aspect.ratio = 1,
legend.background = element_blank(),
plot.margin = margin(1, 0.5, 0.5, 0.7, "cm"),
legend.key = element_blank()) +
annotate("text", x=-0.3, y=3,
label=sprintf("r = %0.2f, r_p = %0.3f\npr = %0.2f, pr_p = %0.3f",
r.bm_corrD, r_p.bm_corrD, pr.bm_corrD, pr_p.bm_corrD),
fontface="italic", colour="black", size=5))
}
# plot-control 26
ggarrange(loc_z_bm_all,
loc_z_corrD_all,
loc_bm_corrD_all,
nrow=1, ncol=3, labels = "Consolidated - Immediated")# ggarrange(lloc_z_bm_all,
# lloc_z_corrD_all,
# lloc_bm_corrD_all,
# nrow=1, ncol=3, labels = "Consolidated - Immediated")
#
# ggarrange(rloc_z_bm_all,
# rloc_z_corrD_all,
# rloc_bm_corrD_all,
# nrow=1, ncol=3, labels = "Consolidated - Immediated")
#
# ggarrange(a_hpp_z_bm_all,
# a_hpp_z_corrD_all,
# a_hpp_bm_corrD_all,
# nrow=1, ncol=3, labels = "Consolidated - Immediated")
#
# ggarrange(p_hpp_z_bm_all,
# p_hpp_z_corrD_all,
# p_hpp_bm_corrD_all,
# nrow=1, ncol=3, labels = "Consolidated - Immediated")
#
# ggarrange(mpfc_z_bm_all,
# mpfc_z_corrD_all,
# mpfc_bm_corrD_all,
# nrow=1, ncol=3, labels = "Consolidated - Immediated")Consolidation에 의해 획득된 구조적 지식이 물체의 구조화된 표상을 촉진한다면 구조적 지식의 형성과 관련된 뇌 영역들과 지각 처리 중의 LOC 간의 신경 상호작용을 기대할 수 있다. 이를 검증하기 위해 각 참가자의 LOC를 시드 영역으로 사용하여 전체 뇌 영역에 대한 Seed-based Background Functional Connectivity Analysis를 수행하였다. 분석은 Custom Matlab Code를 통해 수행되었다.
과제 수행 중의 영역 간 내재적 기능적 연결성을 측정하기 위해 Background Connectivity Approach를 사용하였다. 2nd learning phase에서 획득된 신경 신호에서 두 단계의 Regression Step (Nuisanse model -> Evoked Model)을 수행하여 잡음 및 과제 관련 신호가 제거된 timecourse data를 추출하였다. 이후 LOC seed (radius = 5 voxels, 10 mm)를 설정한 후, LOC seed가 포함된 Lateral Occipital Cortex를 제외하고 전체 뇌 영역에 6mm sphere searchlight (radius = 3 voxels, 6 mm)을 수행하였다. 각 조건에서 LOC seed의 time course와 searclight 영역의 time course 간의 Pearson correlation coefficient를 계산하고, 이를 fihser의 z-transformation으로 z 점수로 변환하였다. 그리고 두 조건 간의 z-socored correlation coefficient의 차이 점수를 계산하였다. 마지막으로 paired-samples t-test를 수행하여 차이 점수가 0보다 큰지 확인하고, 통계적 검정에서 살아남은 10개 이상의 복셀을 군집 영역으로 설정하였다(p < .01, uncorrected).
가설과 일치하게, Consolidated 조건에서는 mPFC, Precunenous 및 Postterior Cingulate Cortex와 같은 Default Mode Network 영역이 LOC seed와 강한 Connectivity를 보였다. 대조적으로 Immediate 조건에서는 LOC seed와 Hippocampus 간의 Connectivity가 관찰되었다.
앞선 분석에서의 세 가지 주요 결과는 모두 물체 선택적 시각 영역인 LOC 내에서 관찰되었다. Hippocampus와 mPFC 등 기억 관련 영역에 대한 보충 분석에서 유의미한 효과가 관찰되지 않았으나, 여전히 다른 뇌 영역에서 구조화된 표상의 효과가 관찰될 가능성이 있다. 따라서 전체 뇌 영역에 대한 6 mm sphere searchlight analysis (radius = 3 voxels, 6 mm)를 수행하였다. 분석은 Custom Matlab Code를 통해 수행되었다.
본 분석의 계산 방법을 활용하여 각 Searchlight에 대해 1) 조건 간 활성화 값의 차이, 2) 조건 간 Beta value의 차이, 3) 조건 간의 표상적 유사성 값의 차이를 추출하였다. 이후 3개의 차이 점수가 0보다 유의하게 큰지 여부를 one-sample t-test로 검증하고, 3개의 통계 검정 모두에서 살아남은 클러스터를 식별하였다 (p < 0.05, uncorrected).
분석 결과, Consolidated 조건의 Lateral Occipital Cortex 내의 클러스터 (12 voxels)에서 구조화된 표상의 세 가지 효과가 관찰되었다. 또한 Temporal Occipital Fusiform Cortex와 Lingual Gyrus에서도 유사한 결과가 관찰되었다. Immediate 조건에서는 클러스터가 식별되지 않았다.